Ik had nog een vraag over het programma wat ik geschreven heb, het programma heeft gewerkt maar om een of andere reden werkt hij niet meer.
de Setup:
pic basic code:
#include <Servo.h>
Servo mijnServo; // Servo wordt mijnServo genoemd
int buttonPin1 = 7; // MicroSwitch 1 op pin 7
int buttonPin2 = 4; // MicroSwitch 2 op pin 4
int buttonPin3 = 2; // MicroSwitch 3 op pin 2
int buttonPin4 = 12; // MicroSwitch 4 op pin 12
//L293D
//Motor A, Transport
const int motorPin1 = 5; // Pin 14 van L293
const int motorPin2 = 6; // Pin 10 van L293
//Motor B, Drukken van de dop op flesje
const int motorPin3 = 10; // Pin 7 van L293
const int motorPin4 = 9; // Pin 2 van L293
void setup(){
// Servo wordt verbonden met pin 8
mijnServo.attach(8);
// Pin van de Micro Switch 1 tm 4 zijn INPUTS
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
pinMode(buttonPin4, INPUT_PULLUP);
// Beginpunt van Servo is 0 graden
mijnServo.write(0);
// Pin van de Motorschakelingen zijn OUTPUTS
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
Wat ik eerst had (heeft gewerkt maar nu niet meer)
pic basic code:
void loop(){
// Motor A gaat draaien tot MicroSwitch 2 (1 -> 2)
while (digitalRead(buttonPin1) == LOW);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin3) == HIGH);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Motor A komt bij MicroSwitch 2 en stopt met draaien, servo komt in beweging
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == LOW);
while (digitalRead(buttonPin3) == HIGH);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
mijnServo.write(35);
delay(1500); // 1.5 Seconde wachten tot hij weer naar 0 graden draait
mijnServo.write(0);
// Motor A gaat draaien als Micro Switch 2 nog ingedrukt is maar Micro Switch 3 nog niet
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == LOW);
while (digitalRead(buttonPin3) == HIGH);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Motor A stopt met draaien wanneer hij Micro Switch 3 bereikt
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin3) == LOW);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Motor B gaat draaien, en draait weer terug
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin3) == LOW);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(500);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(500);
// Motor A gaat draaien tot hij Micro Switch 4 bereikt
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin3) == LOW);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Motor A stopt en draait terug tot beginpunt (Het eindpunt)
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin4) == LOW);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(500);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Motor A draait terug en komt langs MicroSwitch 3 maar moet verder
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin3) == LOW);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Motor A draait terug en komt langs MicroSwitch 2 maar moet verder
while (digitalRead(buttonPin1) == HIGH);
while (digitalRead(buttonPin2) == LOW);
while (digitalRead(buttonPin3) == HIGH);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Motor A komt bij Micro Switch 1 (Het beginpunt)
while (digitalRead(buttonPin1) == LOW);
while (digitalRead(buttonPin2) == HIGH);
while (digitalRead(buttonPin3) == HIGH);
while (digitalRead(buttonPin4) == HIGH);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
De micro switches krijgen allemaal een puls maar werken niet met elkaar samen, ik kan 1 micro switch aansturen derest werkt dan niet meer.
Ik dacht eraan om het zo aan te passen maar dat heeft nog niks geholpen:
pic basic code:
void loop(){
// Motor A gaat draaien tot MicroSwitch 2 (1 -> 2)
while (digitalRead(buttonPin1) == LOW && digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3) == HIGH && digitalRead(buttonPin4) == HIGH); {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// Motor A komt bij MicroSwitch 2 en stopt met draaien, servo komt in beweging
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == LOW && digitalRead(buttonPin3) == HIGH && digitalRead(buttonPin4) == HIGH); {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
mijnServo.write(35);
delay(1500); // 1.5 Seconde wachten tot hij weer naar 0 graden draait
mijnServo.write(0);
}
// Motor A gaat draaien als Micro Switch 2 nog ingedrukt is maar Micro Switch 3 nog niet
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == LOW && digitalRead(buttonPin3) == HIGH && digitalRead(buttonPin4) == HIGH); {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// Motor A stopt met draaien wanneer hij Micro Switch 3 bereikt
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3) == LOW && digitalRead(buttonPin4) == HIGH); {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// Motor B gaat draaien, en draait weer terug
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3) == LOW && digitalRead(buttonPin4) == HIGH);{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(500);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(500);
}
// Motor A gaat draaien tot hij Micro Switch 4 bereikt
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3) == LOW && digitalRead(buttonPin4) == HIGH);{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// Motor A stopt en draait terug tot beginpunt (Het eindpunt)
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3) == HIGH && digitalRead(buttonPin4) == LOW); {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(500);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// Motor A draait terug en komt langs MicroSwitch 3 maar moet verder
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3) == LOW && digitalRead(buttonPin4) == HIGH);{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// Motor A draait terug en komt langs MicroSwitch 2 maar moet verder
while (digitalRead(buttonPin1) == HIGH && digitalRead(buttonPin2) == LOW && digitalRead(buttonPin3) == HIGH && digitalRead(buttonPin4) == HIGH); {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// Motor A komt bij Micro Switch 1 (Het beginpunt)
while (digitalRead(buttonPin1) == LOW && digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3) == HIGH && digitalRead(buttonPin4) == HIGH); {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
}
Mijn vraag is dus, hoe kan ik ervoor zorgen dat alle 4 mijn micro switches worden gelezen. Zodat het proces niet door elkaar gaat lopen of alleen maar 1 handeling uitvoerd.
Bij voorbaat dank!