Ho iniziato da poco a programmare Arduino, e non capisco come collegare un pin ad una variabile, ho provato a cercare su internet, ma usano termini troppo specifici e non capisco.
Io adesso sto cercando di collegare una luce led ad un sensore ad angolo (quelli piccoli con la pallina dentro), ma il led rimane acceso oppure non si spegne.
Cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie, igor
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte verrebbero temporaneamente nascoste), quindi ti consiglio di farla al più presto.
Grazie, mi sono presentato nell'apposita discussione, adesso per avere una risposta devo aspettare o creare un'altra domanda?
No, va bene proseguire qui. In merito alla tua domanda non puoi assegnare direttamente un pin ad una variabile, ma puoi leggere il pin che ti interessa ed assegnare il suo valore ad una variabile con la funzione digitalRead().
Ciao, Ale.
Allora non capisco proprio cosa ho sbagliato, allego il codice qui sotto, perché non mi dà errore, e non mi si accende neanche.
Grazie.
int LED;
#define ledPin 13//the led attach to
void setup()
{
pinMode(LED,OUTPUT);
pinMode(ledPin,OUTPUT);//initialize the ledPin as an output
pinMode(2,INPUT);
pinMode(8, INPUT);
digitalWrite(2, HIGH);
// digitalWrite(9, LOW);
}
/******************************************/
void loop()
{
int digitalVal = digitalRead(2);
if(HIGH == digitalVal)
{
digitalWrite(ledPin,LOW);//turn the led off
}
else
{
digitalWrite(ledPin,HIGH);//turn the led on
}
if(HIGH == ledPin)
{
digitalWrite(LED,HIGH);
}
int LED = digitalRead(8);
if(LOW == ledPin)
{
digitalWrite(LED,LOW);
}
}
Bel pasticcio di programma. Sorry ^-^
Partiamo da inizio.
A. Tu hai 1 input (sensore) e da accendere 1 led giusto ?
Quindi perchè hai 2 pinMode in INPUT e 2 pinmode in OUTPUT ??
B. servono info. A quale pin hai collegato il led ? A quale pin il sensore ?
Allora, la situazione è un po' complicata, perché io sto facendo il tutorial dello starter kit, lui mi fa accendere il led di Arduino, ed io ci ho attaccato un led blu in più con il positivo al pin 8 ed il negativo al gnd
Beh, si possono accendere tutti e due.
MI RACCOMANDO, spero che hai messo una resistenza che verso il led collegato al pin 8
Siccome hai 2 led, allora usa 2 define o ancora meglio usi la const byte e lo fai anche per il sensore (che mi pare sia collegato al pin 2)
const byte ledPin = 13; // led interno
const byte LED = 8; // led esterno
const byte sensorPin = 2; // led esterno
void setup()
{ pinMode(LED,OUTPUT);
pinMode(ledPin,OUTPUT);
pinMode(sensorPin,INPUT);
}
L'ho messa, ma ho gli stessi errori che ho citato all'inizio.
Nel ciclo continua ad usare quei nomi:
void loop()
{
byte digitalVal = digitalRead(sensorPin);
if(HIGH == digitalVal)
{
digitalWrite(ledPin,LOW);//turn the led off
digitalWrite(LED,HIGH);
}
else
{
digitalWrite(ledPin,HIGH);//turn the led on
digitalWrite(LED,LOW);
}
}
A questo programma poi ti conviene aggiungere dei messaggi che vanno sulla seriale e che puoi vedere nel Monitor Seriale
const byte ledPin = 13; // led interno
const byte LED = 8; // led esterno
const byte sensorPin = 2; // led esterno
void setup()
{
Serial.begin(9600);
Serial.println("Avvio programma");
pinMode(LED,OUTPUT);
pinMode(ledPin,OUTPUT);
pinMode(sensorPin,INPUT);
}
void loop()
{
byte digitalVal = digitalRead(sensorPin);
if(HIGH == digitalVal)
{
Serial.println("sensore HIGH");
digitalWrite(ledPin,LOW);//turn the led off
digitalWrite(LED,HIGH);
}
else
{
Serial.println("sensore LOW");
digitalWrite(ledPin,HIGH);//turn the led on
digitalWrite(LED,LOW);
}
}
Varie cose
Prese un po' a caso:
Una variabile non si chiama in maiuscolo
Inoltre non la inizializzi, che solo in questo caso significa che vale zero
Qui fai una pinmode di un pin che non conosci
Per tua informazione è usato dalla seriale, non è bene usarlo per altro
Qui va bene, ma come hai collegato il pulsante ?
Al pin 8 non ci avevi messo un led?
Questo non era un input?
Vado avanti o riprendi in mano un po' di teoria ?
E magari pensi "un attimino" prima di scrivere codice in maniera incontrollata?
Ho provato ad usare il codice preso da "nid69ita" e non capisco perché continua a lampeggiare, ma adesso provo a correggere da me, grazie comunque.
Scusa Standardoil, ho iniziato a programmare da 3 giorni, non capisco bene il significato di tutti i codici.
Credo dipenda da come hai collegato il pulsante
Come lo hai collegato?
No, non ho collegato un pulsante, bensì un sensore ad angolo
Quello che chiamano Tilt sensor ? vedi se è questo (se si, anche lui necessita resistenza)
"https://docs.arduino.cc/tutorials/generic/tilt-sensor"
Sì, esattamente lui.
Ti faccio vedere direttamente la foto così capisci meglio.
Io ho seguito le istruzioni del kit, poi ho aggiunto il led blu.
Se lo hai connesso così non devi "aprire" il suo piedino come "INPUT" ma come "INPUT_PULLUP"
Servirebbe anche un debounce, ma per il momento basta così
Ps
Io di solito "mollo" chi non sa spiegarsi e al posto di una "sana" spiegazione mette foto, video, youtubate o altra sporcizia simile
Secondo me chi non si sa spiegare non sarà nemmeno in grado di capire la soluzione
Ma ho fatto eccezione data la tua età
Grazie mille, adesso funziona, anche se non capisco cosa cambia fra imput_pullup e input.