Hallo Allemaal,
Voor de mensen die graag willen weten hoe het probleem is gelost, heb ik nu het project in werkende staat (attachment Varkensgedrag_1) bijgevoegd. Er word nu geen delay meer gebruikt maar de millis(); methode van tijds indeling van de tutorial BlinkWhitoutDelay. Hopelijk heeft iemand er wat aan.
Hopelijk kan iemand mij helpen. Ik probeer een programma te schrijven dat door middel van diverse sensoren en knoppen verschillende servo's, lampjes en geluiden aanstuurt. Met dit programma wil ik een animatronic pop tot leven brengen en laten reageren op de omgeving zonder dat ik daar ter plekken veel aan hoef te doen.
Op het moment probeer ik diverse acties in losse functies onder te brengen die ik aanroep in gedragsprogramma's. Op die manier kan ik bijvoorbeeld voor de servo die het linker oor aanstuurt een aantal bewegingen scripten die vervolgens in diverse gedragsprogramma's aangeroepen kunnen worden.
Voorbeeld van een actie functie
void OorL2Function (){// deze functie beweegt het linker oor diverse keren
Serial.println("OorL 0");
OorLServo.write(0);
delay(5000);
Serial.println("OorL 180");
OorLServo.write(180);
delay(1000);
Serial.println("OorL 90");
OorLServo.write(90);
delay(2000);
Serial.println("OorL 120");
OorLServo.write(120);
}
Voorbeeld van een gedragprogramma
else if (Gedrag == 6){
Serial.println("gedrag6 gestart");//stand ins voor echte commando's
switch (Beweging){
case 0:
Serial.println("case 0");//stand ins voor echte commando's
OorL0Function();
Neus0Function();
Beweging++;
delay(6000);
break;
case 1:
Serial.println("case 1");//stand ins voor echte commando's
OorL1Function();
Neus1Function();
delay(6000);
Beweging++;
break;
case 2:
Serial.println("case 2");//stand ins voor echte commando's
OorL2Function();
Neus2Function();
delay(18000);
Beweging++;
break;
case 3:
Serial.println("einde gedrag 6");//stand ins voor echte commando's reset alle parameters voor een nieuwe input mogelijkheid
Beweging = 0;
knopStaat = 0;
knopActief = 0;
Gedrag = 0;
break;
}
Helaas worden met mij huidige code alle actie functies achter elkaar afgespeeld in plaats van door elkaar. Dan beweegt de neus dus pas als oor 1 klaar is met bewegen en daarna pas de ogen. Dat ziet er dus suf uit en niet levend.
Mijn vraag is dus of iemand een manier weet om output parallel aan te sturen zonder dat ik alle acties direct in de gedragsprogramma's moet schrijven want als ik dat doe kan ik wel verschillende output apparaten tegelijk en door elkaar aansturen. Maar dan word de code massief en onoverzichtelijk.
De totale code heb ik als attachment bij gevoegd
Alvast bedankt voor de hulp.
Random_nummer_op_array_servo7.ino (13.4 KB)
Varkengedrag_1.ino (14.8 KB)