Modellbahnsteuerung mit Arduino

2015-01-03 von Mario

Mit der Arduino-Plattform ist es sehr einfach, Hardware anzusteuern. Auf der Modellbahnanlage von E. Wolf wird ein Bagger, ein Kran und eine Raupe über jeweils einen Servo angesteuert. Damit der Ablauf nicht immer gleich ist, wird noch etwas “Zufall” integriert.

 

Hier gibt es den Quellcode für diese Umsetzung.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <Servo.h>
 
struct fahrzeug {
  int degree;
  int ms;
  int pin;
  Servo servo;
};
 
fahrzeug fahrzeug_list[3];
 
void setup(){
  // declare Fahrzeuge
  struct fahrzeug raupe1;
  struct fahrzeug bagger1;
  struct fahrzeug kran1;
 
  // define Raupe
  raupe1.pin = 10;
  raupe1.degree = 160;
  raupe1.ms = 88;
 
  // define Bagger
  bagger1.pin = 9;
  bagger1.degree = 180;
  bagger1.ms = 75;
 
  // define Kran
  kran1.pin = 11;
  kran1.degree = 180;
  kran1.ms = 20;
 
  // add Fahrzeuge to list
  fahrzeug_list[0] = raupe1;
  fahrzeug_list[1] = bagger1;
  fahrzeug_list[2] = kran1;
}
 
void loop(){
  long rnd = random(0,3); // random(min,max-1)
  rotate_fahrzeug(fahrzeug_list[rnd]);
}
 
void rotate_fahrzeug(struct fahrzeug &fzg){
  int pos = 0;
 
  // attach servo to pin
  fzg.servo.attach(fzg.pin);
 
  for(pos=0;pos<=fzg.degree;pos+=1){
    fzg.servo.write(pos);
    delay(fzg.ms); 
  }
 
  for(pos=fzg.degree;pos>=0;pos-=1){                              
    fzg.servo.write(pos);
    delay(fzg.ms);
  }
 
  // set servo to start position
  fzg.servo.write(90);
   
  // detach servo
  fzg.servo.detach();
}

 

Kategorie: Modellbahn Schlagwörter: , ,

Liste aller USB Geräte anzeigen (unter Linux mit C)

2012-11-13 von Mario

Mit diesem Beispiel können alle angeschlossenen USB-Geräte, unter Linux, ausgelesen werden.

Das Ergebnis sieht wie folgt aus.

Zum Vergleich, die Ausgabe von dem Befehl lsusb.

Damit das Programm auch kompiliert, wird eine Library benötigt.

Installation der USB Library

1
sudo apt-get install libusb-dev

Compile

1
gcc find_usb.c -o find_usb.o -lusb

 

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <usb.h>
 
int main()
{
 
    struct usb_bus *bus;
    struct usb_device *dev;
 
    usb_init();
    usb_find_busses();
    usb_find_devices();
 
    for (bus = usb_get_busses(); bus; bus = bus->next)
    {
 
        printf("Bus %s \n", bus->dirname);
 
        for (dev = bus->devices; dev; dev = dev->next)
        {
            printf("Device %s vid=%04X, pid=%04X\n", dev->filename,    
            dev->descriptor.idVendor, dev->descriptor.idProduct);
        }
    }
 
    return 0;
}

Viel Spaß damit! :)

Kategorie: IT Schlagwörter: , , , , ,