Go Down

Topic: Creare un allarme (Read 628 times) previous topic - next topic

mattdj

Salve ragazzi ho cercato di creare un allarme ma ho un problema con lo sketch ho collegato un interruttore a chiave ad arduino


Code: [Select]

int Chiave;
int Sensore;
int Led=3;

void setup()
{
  Serial.begin(9600);
  pinMode(A0,INPUT); //Sensore PIR
  pinMode(4,INPUT);  //Chiave
  pinMode(3,OUTPUT); //LED
  Chiave=digitalRead(4);
  Sensore=digitalRead(A0); 
}

void loop()
{
  if((Chiave==LOW) and (Sensore==LOW));
  {
    Serial.println("Allarme Inserito");
    delay(5000);   
    Serial.println("Zona 1 OK!");
    digitalWrite(Led,LOW);
  }
  if((Chiave==LOW) and (Sensore==HIGH));
  {
    Serial.println("Attenzione!Zona 1");
    delay(20000);
    digitalWrite(Led,HIGH);
  }
  if((Chiave==HIGH) and (Sensore==LOW));
  {
    Serial.println("Allarme Disinserito");
    digitalWrite(Led,HIGH);
    delay(1000);
    digitalWrite(Led,LOW);
  }
  if((Chiave==HIGH) and (Sensore==HIGH));
  {
    Serial.println("Allarme Disinserito");
    digitalWrite(Led,HIGH);
    delay(1000);
    digitalWrite(Led,LOW);
  } 
}

flz47655

Il punto e virgola dopo gli if

mattdj

Gli ho tolti ma non funziona lo stesso non mi legge la chiave ne il sensore

nid69ita

#3
Sep 11, 2013, 02:17 pm Last Edit: Sep 11, 2013, 02:19 pm by nid69ita Reason: 1
1. Non esiste in C la keyword AND.   Devi usare &&
2. le letture dei sensori le devi fare di continuo, non solo nella setup(). Quella viene eseguita una sola volta. Devi spostare queste due nella loop():
Code: [Select]
Chiave=digitalRead(4);
Sensore=digitalRead(A0); 

Poi magari lo schema di come hai collegato i sensori e interruttore può essere utile.
my name is IGOR, not AIGOR

mattdj

Io in un altro sketch lo usato AND funzionava normalmente

nid69ita

cerca Logical operators in questo link:
http://www.cplusplus.com/doc/tutorial/operators/

La and e la or non esistono in C ne in C++ ne in Arduino (che è poi C++)
http://arduino.cc/en/Reference/Boolean
my name is IGOR, not AIGOR

mattdj

ok ho sistemato ho messo la && ma adesso rimane sempre disattivato al contrario di prima che rimaneva sempre attivo e non leggeva il sensore

nid69ita


2. le letture dei sensori le devi fare di continuo, non solo nella setup(). Quella viene eseguita una sola volta. Devi spostare queste due nella loop():


Questo lo hai fatto?
metti anche 2 Serial.println() dei valori delle due variabili Chiave e Sensore. Così puoi verificare se cambiano e se la logica degli if è coerente.
my name is IGOR, not AIGOR

m_ri

forse la AND è definita da qualche parte come
#define AND &&

la mia è un'ipotesi..

mattdj

Ok grazie mille funziona voglio farvi due domande sempre su questo progetto come faccio a collegare un Piezo buzzer è un interruttore a chiave(a 2 Poli uno N l'altro L)

nid69ita

In questo link del forum puoi trovare un pò di schemi di collegamento fatti da @xxxpighi:
http://forum.arduino.cc/index.php?topic=146152.new#new
my name is IGOR, not AIGOR

mattdj

ciao  è troppo piccolo non riesco a vedere quale resistenza usare per il piezo buzzer e non riesco a trovare come collegare l' interruttore a chiave

gpb01


ciao  è troppo piccolo non riesco a vedere quale resistenza usare per il piezo buzzer e non riesco a trovare come collegare l' interruttore a chiave


Vai sul sito di Pighixxx, QUI, ti scegli il set di schede e TE LO SCARICHI !!!

Guglielmo
Search is Your friend ... or I am Your enemy !

mattdj

Ciao grazie Guglielmo io non ho una resistenza da 100 ohm la più piccola che ho è da 220 ohm la posso usare lo stesso?

nid69ita

Sempre da sito di xxxpighi, utility per il calcolo delle resistenze se messe in parallelo:
http://www.pighixxx.com/tools/resistenze-in-parallelo/

Ovvero, metti 2 R da 220 in parallelo => 110 ohm
my name is IGOR, not AIGOR

Go Up