Difference between revisions of "Das Elektronik Buch"
From ThorstensHome
(→blink.c) |
|||
Line 1: | Line 1: | ||
− | Es gibt [http://www.franzis.de/elektronik/lernpakete-elektronik/lernpaket-elektronik-start-mit-usb dieses Buch-Paket], mit dem ich hier ein paar Linux-Experimente unternehmen will. Das Buch enthält eine Platine mit [[FTDI]] chip, die man an einen USB Port anschließen kann. Die Platine ist dann unter Linux z.B. als /dev/ttyUSB0 ansprechbar. Auf der Platine kann man elektronische Schaltungen stecken. | + | Es gibt [http://www.franzis.de/elektronik/lernpakete-elektronik/lernpaket-elektronik-start-mit-usb dieses Buch-Paket], mit dem ich hier ein paar Linux-Experimente unternehmen will. Das Buch enthält eine Platine mit [[FTDI]] chip, die man an einen USB Port anschließen kann: |
+ | |||
+ | [[File:ftdi.png]] | ||
+ | |||
+ | Die Platine ist dann unter Linux z.B. als /dev/ttyUSB0 ansprechbar. Auf der Platine kann man elektronische Schaltungen stecken. | ||
= Blinker = | = Blinker = |
Revision as of 08:14, 20 April 2013
Es gibt dieses Buch-Paket, mit dem ich hier ein paar Linux-Experimente unternehmen will. Das Buch enthält eine Platine mit FTDI chip, die man an einen USB Port anschließen kann:
Die Platine ist dann unter Linux z.B. als /dev/ttyUSB0 ansprechbar. Auf der Platine kann man elektronische Schaltungen stecken.
Blinker
So schnell wie möglich blinken:
import serial,glob for devices in glob.glob("/dev/ttyUSB*"): garbage=42 # appease python conn = serial.Serial(devices, baudrate=9600) while True: conn.setDTR(False) conn.setDTR(True)
Ok, das flackert... Also mal ausprobiert, wie lange 1000 Schaltoperationen auf DTR dauern:
import serial,glob,time for devices in glob.glob("/dev/ttyUSB*"): garbage=42 # appease python conn = serial.Serial(devices, baudrate=9600) print time.time() for i in range(1,1000): conn.setDTR(False) conn.setDTR(True) print time.time()
Dauern 4 Sekunden bei mir... das ist zu lange. Probieren wir es in C.
blink.c
#include <sys/ioctl.h> #include <fcntl.h> int main() { int port, i, status1, status2; port=open("/dev/ttyUSB0", O_RDWR|O_NOCTTY|O_NONBLOCK); ioctl(port, TIOCMGET, &status1); status2=status1; status1 |= TIOCM_DTR; status2 &= ~TIOCM_DTR; for (i=1;i<1000;i++) { ioctl(port, TIOCMSET, &status1); ioctl(port, TIOCMSET, &status2); } }
Compilieren mit
gcc blink.c
Ausfuehren mit
./a.out
Dauert immer noch 4 Sekunden.