non ti servono i contravers , bastano dei ponticelli che simulino i livelli alto e basso in base alla cifra binaria1100011 per 99 e 0000001 per 1 per un totale di 7 ingressi. Sto ancora aspettando il libro dei primi passi con arduino......spero arrivi presto. In inglese mi arrangio un pochino ma faccio fatica. Ciao
spetta... ma fammi capire... tu a livello di programmazione come sei messo? cioè tu vorresti che il programma te lo facessi per intero io senza scheda eccetera eccetera?
... perchè pensavo ti bastasse un codice di idea e poi lo finivi te... se ti serve funzionante mi serve tempo libero e l'arduino: non ci piove.
vabbo... copia 'sta soppa qua:
const byte pinStart = 0;
const byte pin1Cont1 = 1;
const byte pin2Cont1 = 2;
const byte pin3Cont1 = 3;
const byte pin4Cont1 = 4;
const byte pin1Cont2 = 5;
const byte pin2Cont2 = 6;
const byte pin3Cont2 = 7;
const byte pin4Cont2 = 8;
const byte pinRelay = 9;
int val = 0;
long startMillis =0;
void setup() {
// questo pone gli input
int i;
for (i=0; i<9; i++)
pinMode(i,INPUT);
// lo start lo salta perchè mi fa andare schemo
for (i=1; i < 9; i ++)
digitalWrite( i, HIGH );
// e fa l'output
pinMode(pinRelay,OUTPUT);
}
int stato = 0;
void initConteggio()
{
int iBit1 = 0; int iBit2 = 0; int iBit4 = 0; int iBit8 = 0;
iBit1 = 1 - digitalRead( pin1Cont1 );
iBit2 = 1 - digitalRead( pin2Cont1 );
iBit4 = 1 - digitalRead( pin3Cont1 );
iBit8 = 1 - digitalRead( pin4Cont1 );
val = iBit8 * 8 + iBit4 * 4 + iBit2 * 2 + iBit1;
iBit1 = 1 - digitalRead( pin1Cont2 );
iBit2 = 1 - digitalRead( pin2Cont2 );
iBit4 = 1 - digitalRead( pin3Cont2 );
iBit8 = 1 - digitalRead( pin4Cont2 );
val = val*10 + iBit8 * 8 + iBit4 * 4 + iBit2 * 2 + iBit1;
startMillis = millis();
digitalWrite(pinRelay, HIGH);
}
void loop() {
int tastoStart = digitalRead(pinStart);
if (tastoStart == HIGH) {
while (tastoStart == HIGH) tastoStart = digitalRead(pinStart);
if (stato == 0) {
stato = 1;
initConteggio();
} else { //premuto il bottone... procedo a fare lo stop.prima del tempo
stato = 0;
digitalWrite(pinRelay, LOW);
};
} ;
if (stato == 1) {
//counter in funzione
if ((millis() - startMillis) > (val * 1000)) {
stato = 0;
digitalWrite(pinRelay, LOW);
}
}
}
attento che ho messo i contracosi tra 1 e 4 e tra 5 e 8... 5 e 8 sono le unità.
i contracosi lavorano con resistenza di pullup attivata mentre ho messo il pulsante di start/stop
sul pin 0 ma senza resistenza di pullup attivata perchè è una cosa che mi manda in confusione il cervello specie alle 23 di notte e con un simulatore che non simila...
...relay di uscita sul piedino 9... ... l'ho chiamato relay ma tu ci attacchi un fotoaccoppiatore vero?