ciao,
sono a mio primo progetto con Arduino.
sono quindi neofita con zero conoscenze di background.
quindi, per favore, aiutatemi come aiutereste vostro figlio di 3 anni….
sto costruendo un gioco per mia figlia.
il programma che ho scritto funziona, ma sicuramente non è il top, e soprattutto avrebbe bisogno di migliorie che non riesco proprio a dare.
ALLORA, ho un motore, due pezzi di striscia led (e quando avrò risolto i problemi con questo sketch, inserirò un amplificatore audio per riprodurre un piccolo brano).
la prima striscia led (strip_b), fa il suo dovere : si accende è resta sempre accesa
il motore fa il suo dovere : parte, fa avanti/indietro a più velocità per qualche secondo
la seconda striscia led fa il suo dovere (strip_a) : nell'ultima parte del codice fa il suo dovere, si accende e spegne random.
però, ecco i problemi per cui mi servono migliorie : quando il motore inizia il suo ciclo, vorrei che la strip_a, facesse un giochetto di luci random per lo stesso identico tempo che il motore in cui il motore fa il suo avanti/indietro, cioè fino ad appena prima il motore resti stabilmente acceso (nello sketch ho messo la nota "GIOCO DI LUCI FINOA QUI". Pero ora ho scritto il codice motore mischiato con quello della strip_a, ma ovviamente è un tamponare. tutto questo, deve succedere una sola volta per circa 4 secondi (ho usato una bool e funziona), per poi "disattivarsi" a favore del motore sempre accesso e della strip_a che va il loop perenne random (e questa parte funziona).
ho provato ad usare la funzione MILLIS, con risultati disastrosi.
potete aiutarmi?
E...non è finita, ovviamente ( ) : vorrei anche mettere un interruttore esterno ON/OFF (dove nel codice ho messo la nota INTERRUTTORE, che governi tutta la parte del codice da li sino alla fine di tutto lo sketch.
mi scuso sin d'ora per i disastri che ho fatto/scritto...ma sono veramente alla mia prima volta, ed ho zero skills….
#define PIN2 3
Adafruit_NeoPixel strip_a = Adafruit_NeoPixel(LEDS, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip_b = Adafruit_NeoPixel(LEDS, PIN2, NEO_GRB + NEO_KHZ800);
// Motore
int enA = 9;
int in1 = 8;
int in2 = 7;
bool onetime = true;
void setup() {
//inizializzo LED Strip
strip_a.begin();
strip_a.show(); // Initialize all pixels to 'off'
strip_b.begin();
strip_b.show();
// GESTIONE MOTORE
// Set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
// Turn off motors - Initial state
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
void loop() {
{
//gestione prima Led Strip (Internal & External Lights)
strip_b.setPixelColor(0, 255, 255, 255);
strip_b.setPixelColor(1, 255, 255, 255);
strip_b.setPixelColor(2, 255, 255, 255);
strip_b.show();
}
// INTERRUTTORE : QUI VORREI METTERE UN INTERRUTTORE ESPERNO, CHE QUANDO LO AZIONO, INNIZI TUTTO QUANTO IL PROGRAMMA DI SEGUITO, FINO ALLA FINE
{
//gestione motore
if(onetime){
analogWrite(enA, 50); // Set motors speed (from 0 and 255 for PWM exit)
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
//LA PARTE DI GESTIONE DELLA SECONDA STRISCIA LED, VORREI SCRIVERLA SEPARAMENTE, MA VORREI FUNZIONASSE CONTEMPORANEAMENTE ALLA PARTE DEL MOTORE
//gestione seconda led strip
strip_a.clear();
strip_a.setPixelColor(2, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(2, 0, 0, 0);
strip_a.show();
delay(1000);
//switch off motor
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
// Now change motor directions
analogWrite(enA, 50);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
strip_a.clear();
strip_a.setPixelColor(10, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(10, 0, 0, 0);
strip_a.show();
delay(500);
//switch off motor
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
delay(200);
//change direction to correct direction
analogWrite(enA, 100);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
strip_a.clear();
strip_a.setPixelColor(4, 255, 27, 1);
strip_a.setPixelColor(6, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(4, 0, 0, 0);
strip_a.setPixelColor(6, 0, 0, 0);
strip_a.show();
delay(500);
analogWrite(enA, 50);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
strip_a.clear();
strip_a.setPixelColor(1, 255, 27, 1);
strip_a.setPixelColor(11, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(1, 0, 0, 0);
strip_a.setPixelColor(11, 0, 0, 0);
strip_a.show();
delay(1000);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
delay(500);
analogWrite(enA, 150);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
strip_a.clear();
strip_a.setPixelColor(2, 255, 27, 1);
strip_a.setPixelColor(9, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(2, 0, 0, 0);
strip_a.setPixelColor(9, 0, 0, 0);
strip_a.show();
delay(500);
analogWrite(enA, 50);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
strip_a.clear();
strip_a.setPixelColor(5, 255, 27, 1);
strip_a.setPixelColor(7, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(5, 0, 0, 0);
strip_a.setPixelColor(7, 0, 0, 0);
strip_a.show();
delay(2000);
analogWrite(enA, 180);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
strip_a.clear();
strip_a.setPixelColor(8, 255, 27, 1);
strip_a.setPixelColor(0, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(8, 0, 0, 0);
strip_a.setPixelColor(0, 0, 0, 0);
strip_a.show();
delay(3500);
analogWrite(enA, 100);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
strip_a.clear();
strip_a.setPixelColor(5, 255, 27, 1);
strip_a.setPixelColor(6, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(5, 0, 0, 0);
strip_a.setPixelColor(6, 0, 0, 0);
strip_a.show();
delay(3500);
strip_a.clear();
strip_a.setPixelColor(3, 255, 27, 1);
strip_a.setPixelColor(10, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(3, 0, 0, 0);
strip_a.setPixelColor(10, 0, 0, 0);
strip_a.show();
analogWrite(enA, 180);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
strip_a.clear();
strip_a.setPixelColor(4, 255, 27, 1);
strip_a.setPixelColor(9, 255, 27, 1);
strip_a.show();
delay(50);
strip_a.setPixelColor(4, 0, 0, 0);
strip_a.setPixelColor(9, 0, 0, 0);
strip_a.show();
//"GIOCO DI LUCI FINO A QUI"
analogWrite(enA, 255);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
}
onetime=false;
}
{
// GESTIONE Random LED ON/OFF LH &RH Exhaust sys quikly mode
strip_a.clear();
strip_a.setPixelColor(random(0, 8), 255, 27, 1);
strip_a.setPixelColor(random(3, 12), 255, 0, 0);
strip_a.show(); //Show The Color
delay(random(0-200));
strip_a.clear();
}
}