MAS3:
Pas als je dat voor mekaar hebt, dan kun je motoren gaan toevoegen.
Hallo, Zoals je had voorgesteld, is hier het eerste deel van het project. Zal eerst even beschrijven wat het zou moeten doen (volgens mij):
Ben begonnen met een paar variabelen aan te maken, zodat ik onderanderen pins heb van mijn arduino, zodat hij die dan op zijn beurt hoog of laag kan maken.
In de setup heb ik de serial.begin(9600) gestopt (1 keer).
Daar geef ik ook weer dat de 2 pins die ik voorlopig gebruik, uitgangen zijn.
In de loop heb ik eerst een kleine controle voor de connectie. wanneer die groter is dan 0, kan je pas verder gaan.
Wanneer de state '0' is, worden alle uitgangen van de motor, in dit geval motorpin1a en motorpin2a LOW gezet. Op een app krijg ik dan het bericht dat de motor "off" is. M.a.w. gestopt.
Wanneer de state '1' is, blijft motorpin1a LOW en wordt motorpin2a HIGH. Ik krijg dan ook een bericht te zien dat, in dit geval de motor omhoog gaat.
Nu, om deze te doen stoppen, moet ik die '0' state weer gebruiken. Die zou ik op één of andere manier eruit willen, daar zit ik al een tijdje op te zoeken, maar weet niet hoe ik dit oplos in de code. Vandaar mijn poging met de holdkey. Wat ik met dit wil bereiken is dat ik de state '1' blijf ingedrukt houden en dat de motor dan blijft omhoog gaan. Tot ik de state '1' weer los laat. Idem voor het andere deel. (Waar de motor dan naar beneden gaat).
int motorPin1a = 3; // pin 3 on Arduino
int motorPin2a = 4; // pin 4 on Arduino
int state;
int flag=0;
void setup() {
// put your setup code here, to run once:
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(motorPin1a, OUTPUT);
pinMode(motorPin2a, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
//if some date is sent, reads it and saves in state
if(Serial.available() > 0){
state = Serial.read();
flag=0;
}
// if the state is '0' the DC motor will turn off
if (state == '0') {
digitalWrite(motorPin1a, LOW); // set pin 3 on L293D low
digitalWrite(motorPin2a, LOW); // set pin 4 on L293D low
if(flag == 0){
Serial.println("Motor: off");
flag=1;
}
}
// if the state is '1' the motor will turn right
else if (state == '1') {
do{
digitalWrite(motorPin1a, LOW); // set pin 3 on Arduino low
digitalWrite(motorPin2a, HIGH); // set pin 4 on Arduino high
if(flag == 0){
Serial.println("Motor: up");
flag=1;
}
} while (state == '1');
}
// if the state is '2' the motor will turn left
else if (state == '2') {
do{
digitalWrite(motorPin1a, HIGH); // set pin 3 on Arduino high
digitalWrite(motorPin2a, LOW); // set pin 4 on Arduino low
if(flag == 0){
Serial.println("Motor: down");
flag=1;
}
} while (state =='2');
}
}
Moest er dus iemand zijn die een idee heeft om tot een oplossing te komen, zou ik die persoon heel dankbaar zijn!