Arduino ändlig tillståndsmaskin och parallellbearbetning (3 / 5 steg)
Steg 3: Den tredje maskinen: 1 master (med nödstopp) och 3 slavar synkroniseras och I2C i/o-expansion
Jag använder 2 slags I2C IC:
-2 x PCF8591P: för att ge 2 x 4 analoga ingångar och 2 x1 analoga utgångar
-2 x PCF8574P: att ge 1 x 8 digitala ingångar och 1 x 8 digitala utgångar.
I2C-adresser är subtraheras med tabellen levereras.
Enligt schematiskt grunda jag den följande adresser:
-73 dec för den första analog utgången (IC PCF8591P)
-74 dec för den andra analog utgången (IC PCF8591P)
-59 dec för digitala ingångar (IC PCF8574P)
-60 dec för de digitala utgångarna (IC PCF8574P)
Nu 3 oberoende maskinerna är vakuumet 3 olika register byte FBx, SBx och PUMPx som jag satte en XOR mask för att ge ett unikt register "x" som uppdaterar IC utgångarna på adressen 60.
Se källkoden, det finns många kommentarer på den.
VARNING! När du driva upp PCF8574 alla de digitala utgångarna gå högt snabbt och sedan låg: det kan skada ditt system. Vara försiktig! För att åtgärda detta använder du ett komplement byte att skicka och en inverterade buffert bakom PCF8574. Jag kommer att korrigera det asap.