Buon giorno,
ho acquistato una scheda Arduino Mini Pro con ATMega328.
Ho iniziato a studiare un pò il linguaggio e per il mio primo progetto mi trovo un pò incasinato .
Allora vi spiego la situazione.
Sto lavorando su un modellino di un'automobile e voglio inserirvi al suo interno dei LED per le luci, e vorrei comandarli con un telecomando IR.
Sto studiando un pò di teoria e qualcosa sono riuscito già a fare ma avrei bisogno di 3 aiutini da parte vostra.
Ho acquistato tutto il necessario ( Controllore, Transistor, Batteria, LED, Resistenze,Cavi ecc..) e iniziato a scrivere il codice sul simulatore della Autodesk https://circuits.io/lab in modo da verificarne il funzionamento del codice che vi riporto sotto insieme al link del mio progetto arduino
Progetto Arduino : https://circuits.io/circuits/3242576-led-ir
Codice :
#include <IRremote.h>
int RECV_PIN = 11;
int ledINTERNI = 10;
int ledANABBANT = 9;
int ledFENDINEBBIA = 8;
int ledFRECCESX = 7;
int ledFRECCEDX = 6;
boolean ledState = LOW;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(ledINTERNI,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if(results.value == 0xFD00FF)
{
ledState = !ledState;
digitalWrite(ledINTERNI,ledState);
}
if(results.value == 0xFD08F7)
{
ledState = !ledState;
digitalWrite(ledANABBANT,ledState);
}
if(results.value == 0xFD8877)
{
ledState = !ledState;
digitalWrite(ledFENDINEBBIA,ledState);
}
if(results.value == 0xFD48B7)
{
ledState = !ledState;
digitalWrite(ledFRECCESX,ledState);
digitalWrite(ledFRECCESX,HIGH);
delay(1000);
digitalWrite(ledFRECCESX,LOW);
delay(1000);
}
if(results.value == 0xFD28D7)
{
ledState = !ledState;
digitalWrite(ledFRECCEDX,ledState);
digitalWrite(ledFRECCEDX,HIGH);
delay(1000);
digitalWrite(ledFRECCEDX,LOW);
delay(1000);
}
irrecv.resume();
}
}
Ho posizionato tutti i componenti come li ho messi nel mio schema elettrico precedentemente preparato.
Ho cercato un pò su internet un codice di un progetto già avviato di un telecomando IR e, preso lo sketch, l'ho modificato adattandolo al mio caso e ho avviato il test. Per le luci fisse a parte quelle al PIN 10 non ho problemi, anche se non mi è molto chiaro il codice scelto per la compilazione del segnale IR.
Ho riscontrato però delle difficoltà per quanto riguarda le luci delle frecce (collegate al PIN 7) , dovendo queste funzionare ad intermittenza; ho provato ad inserire nel codice del comando inviato dal telecomando per le frecce a dirgli di farle accendere e spegnere ogni secondo, il problema è che lo fa una sola volta e poi una volta spente non si riaccendono (praticamente le frecce sebbene con funzione delay(1000) non vanno in loop (come invece fanno nella realtà in una macchina), ma dopo 1 secondo si spengono).
Per semplicità al momento ho creato solo le 2 luci freccia sinistra ( penso che per le dx il procedimento sia lo stesso e una volta creato basterà ricopiarlo per le frecce di DX)
Il tasto del telecomando per l'accensione delle frecce SX è il numero 3 nell'esempio.
-
gentilmente qualcuno guardando il codice delle frecce SX mi può suggerire come modificare il codice affinchè una volta inviato il comando dal telecomando di accendersi queste continuino a lampeggiare con delay(1000) in continuazione fino a che non premo nuovamente il tasto 3?
-
nel momento in cui premo il tasto 4 ( che invece è associtato al PIN 6 che alimenta il transistor per le frecce a DX ) vorrei avere 2 possibilità :
- se sono accese solo le frecce di DX lampeggino come scritto sopra per le frecce di SX
- mentre se insieme alle frecce di DX accendo anche le frecce di SX vorrei che entrambe si adattino ed inizino a lampeggiare sia quelle DX e sia quelle SX contemporaneamente (quindi come le 4 frecce in auto)
- sul PIN 10 ho collegato un transistor che alimenta 7 LED, sul mio foglio calcoli, dimensionalmente i valori delle resistenze che ho messo essere corretti per avere una corrente assorbita sugli stessi impostata a 10 mA (come potete vedere in questo estratto
); però avviando il simulatore (che però non mi fa scegliere la tensione dei LED) e premendo il tasto di accensione associato sul telecomando ( ossia il tasto ACCENSIONE del telecomando) il simulatore mi evidenzia che i LED si brucerebbero perchè passerebbe una corrente di 68.5 mA in ciascuno (ho alimentato il tutto nel simulatore con una power supply impostando la Tensione di 7.4 V che a batteria carica sarà anche di 8.4 V ma con il transistor non vi dovrebbe essere problema della tensione a monte perchè come riporto in questo estratto il transistor si preoccupa solo della parte a valle, giusto?
)!!
Ma come è possibile? Che ci sia qualcosa nel codice che gli faccia passare troppa corrente? Perchè ho notato che nel void setup () tra tutte le funzioni è stata inserita solo la pinMode(ledINTERNI,OUTPUT) che è appunto relativa ai LED che mi danno questo problema, mentre tutti gli altri LED, per esempio tipo quelli derivanti del PIN 9 ( sul tasto 1 del telecomando) se li avvio leggo sul power supply una corrente di 6.4 mA che non è possibile per 2 LED in parallelo, calcolati invece per funzionare ciascuno a 16 mA per un totale quindi di 32 mA!!!
Qualcuno mi riesce ad aiutare?
Ringrazio tutti in anticipo per l'aiuto che mi darete
Spero di essere stato chiaro il più possibile , anche se spiegarmi non era proprio semplicissimo.
Se vi servono altri chiarimenti chiedete pure xchè mi serve davvero il vostro aiuto