Občas se tu objevují nápady pro použití arduina jako PLC v průmyslu, což podle mě není nejlepší nápad. Ale kdo se stará o průmyslové stroje /výrobní linky mi dá za pravdu, že se občas hodí sledovat stavy vstupů od fotobuněk, indukčních snímačů apod. A na tohle se arduino parádně hodí. Funkce je jednoduchá: načtu 8 vstupů a jako byte odešlu po sériové lince. V pc rozkóduji na jednotlivé signály a zobrazím.
Použil jsem arduino nano, krabička byla vytištěna na 3d tiskárně.
Popis firmware
seznam vstupů:
Kód: Vybrat vše
byte digPins[] = {5,6,7,8,9,10,11,12};
Kód: Vybrat vše
for(int i=0;i<sizeof(digPins);i++) {
pinMode(digPins[i],INPUT_PULLUP);
}
Kód: Vybrat vše
for(int i=0;i<8;i++) {
bitWrite(stav,i,!digitalRead(digPins[i]));
Serial.write(stav);
Oživení
Pro kontrolu doporučuji odkomentovat:
Kód: Vybrat vše
//#define DEBUG
Pokud je vše ok, zakomentujeme zpět řádek a znovu nahrajeme program sa.ino
Zobrazení
Když jsem tento analyzátor stavěl zobrazovací část jsem napsal v processingu - https://github.com/blindp/sa/blob/maste ... a_java.pde.
Pokud se rozhodnete pro processing, možná budete muset upravit pauzu pro odesílaní dat v sa.ino
Kód: Vybrat vše
#define DELAY_DIGITAL 5
Proto jsem přešel k zmijozelu a přepsal to do pythonu.
V počítači je třeba mít nainstalovaný python, modul serial, tkinter a modul pygraf umístit do stejného adresáře jako sa.pyw
tento port se pokouší otevřít při spuštění.Lze vybrat i jiný za běhu programu z menu-> port (analyzátor musí být připojen před spuštěním sa.pyw):
Kód: Vybrat vše
DPORT = '/dev/ttyUSB0' #defaultni port
Kód: Vybrat vše
profilMenu.add_command(label="CH1 : kolečko, CH2-CH4 : Foto", command=lambda: parent.setdelay((10,200,200,200)))
profilMenu.add_command(label="CH1-CH4 : Foto - rychlé", command=lambda: parent.setdelay((200,200,200,200)))
profilMenu.add_command(label="CH1-CH4 : Foto - pomalé", command=lambda: parent.setdelay((400,400,400,400)))
profilMenu.add_command(label="Vlastní1 ---", command=lambda: parent.setdelay((400,400,400,400)))
profilMenu.add_command(label="Vlastní2 ---", command=lambda: parent.setdelay((400,400,400,400)))
Stejně tak jsem moc nepoužil i ty analogové vstupy, proto je v programu nenajdete. A pozor! Nejsou galvanicky odděleny.
Vše najdete zde: https://github.com/blindp/sa
Závěrem bych chtě říct, že se nejedná o nic velkolepého, ale dost jsem se toho naučil, objevil kouzlo jazyka python a věřím, že i Vám tento projekt něco přinese, inspiruje.
BP