Het ballenkanon van de hovercraft zal worden aangestuurd
door een arduino. Deze arduino zal dan een servo aandrijven waardoor het rad de
bal laat vallen. Omdat wij gebruik maken van een 360 graden servo is het niet
mogelijk om de stappen te bepalen. Daarom hebben we gebruik gemaakt van een code
waarin de servo maar een beperkte tijd zal draaien, waardoor er maar één bal
valt. De servo zal pas gaan draaien als het een signaal krijgt van de arduino.
Deze arduino krijgt een signaal wanneer er een object wordt gedetecteerd door
de ultrasone sensor.
Ik heb geleerd dat het erg lastig is om een goede code te schrijven.
Verder heb ik gemerkt dat ik me hier nog meer mee moet gaan bezig houden, omdat
het vrij complex is. Daarnaast heb ik geleerd dat je door het te proberen
achter de code kunt komen. Ik heb wel veel geleerd van het uitzoeken van de
code. Hieronder kunt u de code zien.
/*
HC-SR04 Ping distance sensor]
VCC to arduino 5v GND to arduino GND
Echo to Arduino pin 13 Trig to Arduino pin 12
Red POS to Arduino pin 11
Green POS to Arduino pin 10
560 ohm resistor to both LED NEG and GRD power rail
More info at: http://goo.gl/kJ8Gl
Original code improvements to the Ping sketch sourced from Trollmaker.com
Some code and wiring inspired by http://en.wikiversity.org/wiki/User:Dstaub/robotcar
*/
#define trigPin 13
#define echoPin 12
#define led 11
#define led2 10
#include <Servo.h>
Servo servo;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
servo.attach (9);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 4) { // This is where the LED On/Off happens
digitalWrite(led,HIGH); // When the Red condition is met, the Green LED should turn off
digitalWrite(led2,LOW);
}
else {
digitalWrite(led,HIGH);
digitalWrite(led2,LOW);
}
if (distance >= 30 || distance <= 0)
{
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
Serial.println("Out of range");
servo.write (92);
delay(100);
}
else {
Serial.print(distance);
Serial.println(" cm");
servo.write (92);
delay(10);
servo.write (91);
delay (1350);
servo.write (92);
delay (5000);
}
delay(10);
}
Geen opmerkingen:
Een reactie posten