ho due domande per questo cablaggio su arduino e volevo un info da parte vostra.
Partiamo dalla prima per poi procedere con la successiva
come vedete ho due interruttori, però dallo schema è collegato sia il + che il -, a me servirebbe che i due interruttori siano collegati solo a massa per poter accendere i led, sarebbe fattibile?
Risposta breve sì
Risposta lunga colleghi pulsante tra ingresso e massa, elimini la resistenza, fai le pinmode come input pullup, ti ricordi di negare le condizioni.
Standardoil:
Risposta breve sì
Risposta lunga colleghi pulsante tra ingresso e massa, elimini la resistenza, fai le pinmode come input pullup, ti ricordi di negare le condizioni.
Graie mille piccolo problemino non ho esperienza con arduino sto iniziando ora a capire come scrivere lo sketch, come si farebbe il "pinmode come input pullup", se può servire ho lo sketch
Allora...
Ho modificato lo sketch, quello prima della modifica era cosi:
#define ACCENDI 2 //Pin interruttore che accende
#define LAMPEGGIA 3 //Pin interruttore lampeggio
#define LED 4 //Pin insieme dei led
#define A_LAMPEGGIO 150 //il tempo di lampeggio. accesi
#define S_LAMPEGGIO 1000 //il tempo di lampeggio. Spenti
void setup()
{
pinMode (ACCENDI, INPUT);
pinMode (LAMPEGGIA, INPUT);
pinMode (LED, OUTPUT);
}
//fine setup()
void loop ()
{
if (digitalRead (LAMPEGGIA))
{
digitalWrite (LED, HIGH);
delay (A_LAMPEGGIO);
digitalWrite (LED,LOW);
delay (S_LAMPEGGIO);
}
if (!digitalRead (LAMPEGGIA) && digitalRead (ACCENDI))
{
digitalWrite (LED, HIGH);
}
if (!digitalRead (LAMPEGGIA) && !digitalRead (ACCENDI))
{
digitalWrite (LED, LOW);
}
}
//Fine loop()
//Fine codice
Questo quello modificato facendo attivare gli interruttori a massa
#define ACCENDI 2 //Pin interruttore che accende
#define LAMPEGGIA 3 //Pin interruttore lampeggio
#define LED 4 //Pin insieme dei led
#define A_LAMPEGGIO 150 //il tempo di lampeggio. accesi
#define S_LAMPEGGIO 100 //il tempo di lampeggio. Spenti
void setup()
{
pinMode (ACCENDI, INPUT_PULLUP);
pinMode (LAMPEGGIA, INPUT_PULLUP);
pinMode (LED, OUTPUT);
}
//fine setup()
void loop ()
{
if (digitalRead (LAMPEGGIA))
{
digitalWrite (LED, HIGH);
delay (A_LAMPEGGIO);
digitalWrite (LED,LOW);
delay (S_LAMPEGGIO);
}
if (!digitalRead (LAMPEGGIA) && digitalRead (ACCENDI))
{
digitalWrite (LED, HIGH);
}
if (!digitalRead (LAMPEGGIA) && !digitalRead (ACCENDI))
{
digitalWrite (LED, LOW);
}
}
//Fine loop()
//Fine codice
Con il cablaggio cosi:
Sembra funzionare però ho un problema, in pratica i LED lampeggiano quando l'interruttore 2 ( quello a destra ) non è premuto, mentre se lo premo si fermano, a me servirebbe il contrario, dove ho sbagliato?
Non hai negato le condizioni
Con input pullup i pulsanti vengono letti, mi si passi il termine, a rovescio
Devo rovesciare anche le if.
In C la negazione è il punto esclamativo
Anche qui è semplice ...
... con le pull-up attive il pin è tenuto normalmente HIGH e quindi, quando nessuno preme il bottone, tu leggi questo livello.
Se il bottone viene premuto, il pin viene collegato con il GND e quindi legge LOW.
Ora tu devi solo aggiustare le tue IF per rispecchiare questa cosa ... :
qui ad esempio il led dovrebbe lampeggiare quando il pulsante non è premuto, giusto? E' quello che vuoi? Penso di no, tu vorresti che lampeggiasse quando il pulsante è premuto, quindi devi invertire il valore di lettura del pulsante da if (digitalRead (LAMPEGGIA)) a if (!digitalRead (LAMPEGGIA))
Io devo eliminare arduino in pratica fare un Arduino Stand-alone ed il tutto dev'essere alimentato da una batteria da 12v, per il mio progetto basta un microcontrollore ATtiny85? per poi alimentare il tutto con i 12v mi servirà un un riduttore 78L05?
Poco perchè? sto iniziando ora ad informarmi cercare ecc ecc so due notti che sono sveglio non ho fretta di finire il progetto, sto cercando di capire come passare il code caricato in arduino nel pic