Gemaakt met 2 ultrasone afstandmeters (SRF02), oude mac-toetsenbord & 1 Arduino Uno.
Schoolproject (cursus: mechatronica), industrieel Design school Kortrijk.
Op de site van TIII (tastbare intuïtieve interactieve Interfaces) kunt u inspiratie en andere Arduino gebaseerde projecten (het is in het Nederlands, maar visueel, je krijgt het punt.)
Zie de instructable voor het hacken: hacken van een USB-toetsenbord
Arduino code:
MATHIEU LEFEBVRE & YORICK STUYTS
2011-2012: MECHATRONIA
Laad bibliotheken voor communicatie ontmoette ultrasoon sensor SRF02
#include < Wire.h >
#include < SRF02.h >
int w = 300;
Maak een nieuw exemplaar van een SRF02 sensor met de opgegeven (7-bit) apparaat-id en meting modus (SRF02_INCHES, SRF02_CENTIMETERS, SRF02_MICROSECONDS).
SRF02 srf02 [2] = {}
SRF02 (0X70, SRF02_CENTIMETERS),
SRF02 (0X71, SRF02_CENTIMETERS)
};
variabelen nodig voor positiemeting
int afstandVA = 0;
int afstandLR = 0;
int lezing = 0;
variabelen nodig voor positiebepaling
Tekenreeks sleutel = "leeg";
variabelen nodig voor de positieberekening
int grenzenVA [4] = {150,190, 260,300}; binnen welke afstanden liggen volgende commando is (vooruit/achteruit)
int grenzenLR [4] = {150,190, 260,300}; binnen welke afstanden liggen volgende commando van (links/rechts)
VOID Setup {}
Wire.begin(); Join i2c bus (adres facultatief voor master)
Serial.begin(9600); Start seriële communicatie 9600 bps
SRF02::setInterval(70); de standaardwaarde is 70
PIN x = > relais x = > toetsslag = > PC/MAC
pinMode (2, OUTPUT); OMHOOG
pinMode (3, OUTPUT); DOWN
pinMode (4, OUTPUT); LINKS
pinMode (5, OUTPUT); RECHTS
}
void loop {}
meetAfstand(); afstanden tot alle sensoren
berekenPositie(); berekendde positie ontmoette fluorescence van de gemeten afstanden
coordinaat van positie
nl ken een toets teen aan een bepaalde positie
activeerToets(); Activeer toets via:
optie 1: relais = > toetsenbord = > usbkabel = > PC, de chambre relais wordt aangestuurd
}
ongeldig meetAfstand() {}
Hier gaan we over van hardware naar software
code: http://www.grapelabs.org/arduino/libraries/srf02-ultrasonic-distance-sensor
EERSTE LEZING
SRF02::update();
afstandVA=srf02[0].read();
afstandLR=srf02[1].read();
uitgang van de lezingen nb storings-controle
Serial.Print ("VA:");
Serial.Print(afstandVA);
Serial.Print ("LR:");
Serial.Print(afstandLR);
Serial.Print("");
}
ongeldig berekenPositie() {}
this function berekend de positie nl kent een toests teen aan een welbepaalde positie
berekening positie: vooruit, achteruit, links & rechts
Als (afstandVA > grenzenVA [0] & & afstandVA als (afstandVA > grenzenVA [2] & & afstandVA als (afstandLR > grenzenLR [0] & & afstandLR als (afstandLR > grenzenLR [2] & & afstandLR
Als (afstandVA > grenzenVA [1] & & afstandVAgrenzenLR [1] & & afstandLR sleutel = "";
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
uitgang ter controle tijdens programeren/werking
Serial.Print ("VERKOOPCYCLUS POSITIE");
Serial.Print(Key);
Serial.println("");
}
ongeldig activeerToets() {}
Hier gaan we over van de software naar de hardware, relais worden aangestuurd om zo een toestslag via een usb-toestenbord deur te sturen naar de aangesloten computer
Als (sleutel == "UP") {//activeer up-relais
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(50);
digitalWrite (2, HIGH);
delay(w-50);
}
anders als (sleutel == "DOWN") {//activeer down-relais
digitalWrite(2,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(50);
digitalWrite (3, hoge);
delay(w-50);
}
anders als (sleutel == "LEFT") {//activeer links-relais
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
delay(50);
digitalWrite(4,LOW);
digitalWrite (4, HIGH);
delay(w-50);
}
anders als (sleutel == "RIGHT") {//activeer recht-relais
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
delay(50);
digitalWrite(5,LOW);
digitalWrite (5, hoge);
delay(w-50);
}
}