Se succede questo fai quello, se dopo tot secondi non succede nulla fai altro

Ciao a tutti qual'è il comando per dire ad arduino di fare due azioni diverse a seconda se si verifica una condizione o meno?
A me servirebbe dire ad arduino munito di sensore ad infrarossi "accendi una lampada per sette secondi ogni trenta secondi, ma se il tuo sensore non capta nessun moviemnto per 60 secondi, allora suona un allarne"
Penso con IF ed Else, giusto?
Ciao

Si, confermo.

Domanda generica, che temo significhi che non hai mai programmato...

Se hai problemi, inizia a postare qui il codice che scrivi, e possiamo provare a darti qualche consiglio, ma fino a quel momento diciamo che è come andare dal professore di analisi e chiedere se la somma di due numeri può dare 5... :wink:

docdoc:
Domanda generica, che temo significhi che non hai mai programmato…

Se hai problemi, inizia a postare qui il codice che scrivi, e possiamo provare a darti qualche consiglio, ma fino a quel momento diciamo che è come andare dal professore di analisi e chiedere se la somma di due numeri può dare 5… :wink:

Esempio assolutamente calzante il tuo :smiley: :smiley: :smiley:

Allora come hai perfettamente capito, non sono assolutamente ferrato con Arduino ma, in compenso, mi piace capire il funzionamento delle cose e pertanto vado studiacchiando in giro per cercare di capirne qualche cosina.

Venendo al mio problema sto costruendo una sorta di tapis roulant che trasporta alcuni oggetti; detto tappetino è mosso da un motore DC che si accende ogni toto di tempo (il tempo è impostato tramite un potenziometro) ed ogni qual volta la cellula intercetta un oggetto spegne il motore per poi riaccenderlo in base al tempo impostato con il potenziometro. E sino a qua sono riuscito a realiazzare lo sketch che posto qui di seguito:

int potPin = A2;
int Buzzer = 3;
int AvoidancePin = 4; // define the obstacle avoidance sensor interface
int RedLed = 5 ;
int GreenLed = 6 ;
int val ;// Value High or LOW. 


// here i set up the tones, you can change them @ void loop.
int tones[] = {261, 277, 293, 311, 329, 349, 369, 392, 415, 440, 466, 493, 523 ,554};
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14
// You can add more tones but i added 14. Just fill in what tone you would like to use, @ void loop you see " tone(Buzzer, tones[12]); " below, digitalWrite(Buzzer, HIGH);
// here you can change the tones by filling in a number between 1 and 14

void setup ()
{
Serial.begin (9600);
pinMode (RedLed, OUTPUT) ;
pinMode (GreenLed, OUTPUT) ; 
pinMode (Buzzer, OUTPUT) ;
pinMode (AvoidancePin, INPUT) ;// define the obstacle avoidance sensor output interface
}
void loop ()
{
val = digitalRead (AvoidancePin) ;// Reading from the AvoidancePin
if (val == HIGH) 
{
digitalWrite (RedLed, LOW);
digitalWrite (GreenLed, HIGH);
digitalWrite (Buzzer, LOW);
noTone(Buzzer);
delay(100);
}
else
{
val = map(analogRead(potPin),0,1023,5000,15000);
digitalWrite (RedLed, HIGH);
digitalWrite (GreenLed, LOW);
digitalWrite (Buzzer, HIGH);
tone (Buzzer, tones[6]);//You can change the tone choosing from 1 to 14.
delay (val);

val = map(analogRead(potPin),0,1023,5000,15000);
digitalWrite (RedLed, HIGH);
digitalWrite (GreenLed, LOW);
digitalWrite (Buzzer, HIGH);
tone (Buzzer, tones[6]);//You can change the tone choosing from 1 to 14.
delay (val);

}
}

Ora mi servirebbe che il Buzzer, che attualmente suona ogni qual volta la cellula intercetta l’oggetto e ferma il motore, si attivi, invece, tutte le volte in cui la cellula non capta il passaggio di alcun oggetto per almeno 60 secondi (quindi un allarme che mi indichi che qualcosa ha inceppato il passaggio degli oggetti).
Mi servirebbe, ancora (non è fondamentale ma riuscirci sarebbe perfetto) potere scegliere fra il funzionamento appena detto (quindi con la cellula) ed il funzionamento del tipo “accendo il motore per 7 secondi e lo riaccendo dopo 20 secondi”.
Per maggiore chiarezza QUI potrete scaricare il manuale di funzionamento di quello che vorrei realizzare che ho scritto, per cazzeggio, domenica mattina e dove, spero, sia chiaro quello che vorrei realizzare.
Ciao e grazie