Ultrasonic interface
Gjorde med 2 ultraljud avståndsmätare (SRF02), gamla mac-tangentbord & 1 Arduino Uno.
Schoolproject (kurs: mekatronik), industriell Design skola Kortrijk.
På platsen för TIII (påtagliga intuitiv interaktiva gränssnitt) kan du hitta inspiration och andra baserade Arduino projekt (det är på nederländska, men visuellt, får du poängen.)
se den instructable för dataintrånget: Hacking ett USB-tangentbord
Arduino kod:
MATHIEU LEFEBVRE & YORICK STUYTS
2011-2012: MECHATRONIA
Lövdahl bibliotek voor communicatie träffade ultrasoon sensor SRF02
#include < Wire.h >
#include < SRF02.h >
int w = 300;
Skapa en ny instans av en SRF02 sensor med angivna (7-bitars) enheten id och mätning-läge (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 läsa = 0;
variabelen nodig voor positiebepaling
Sträng key = "leeg";
variabelen nodig voor de positieberekening
int grenzenVA [4] = {150,190, 260,300}; Binnen welke afstanden liggen volgende commando's (vooruit/achteruit)
int grenzenLR [4] = {150,190, 260,300}; Binnen welke afstanden liggen volgende commando's (länkar/rechts)
void setup() {
Wire.BEGIN(); gå med i2c bussen (adress valfritt för master)
Serial.BEGIN(9600); Starta seriell kommunikation på 9600bps
SRF02::setInterval(70); standard är 70
PIN x = > relais x = > toetsslag = > PC/MAC
pinMode (2, utgång); UPP
pinMode (3, OUTPUT); NED
pinMode (4, OUTPUT); VÄNSTER
pinMode (5, OUTPUT); HÖGER
}
void loop() {
meetAfstand(); afstanden tot alle sensoren
berekenPositie(); berekendde positie träffade behulp van de gemeten afstanden
coordinaat van positie
sv ken een toets tå positie aan een bepaalde
activeerToets(); activeer toets via:
optie 1: relais = > toetsenbord = > usbkabel = > PC, de correcte relais wordt aangestuurd
}
void meetAfstand() {
hier gaan vi över van hårdvara naar mjukvara
koden från: http://www.grapelabs.org/arduino/libraries/srf02-ultrasonic-distance-sensor
EERSTE LEZING
SRF02::Update();
afstandVA=srf02[0].read();
afstandLR=srf02[1].read();
output van de lezingen na storings-controle
Serial.Print ("VA:");
Serial.Print(afstandVA);
Serial.Print ("LR:");
Serial.Print(afstandLR);
Serial.Print("");
}
void berekenPositie() {
d'Eze functie berekend de positie sv kent een toests tå positie aan een welbepaalde
berekening positie: vooruit, achteruit, länkar & rechts
om (afstandVA > grenzenVA [0] & & afstandVA om (afstandVA > grenzenVA [2] & & afstandVA om (afstandLR > grenzenLR [0] & & afstandLR om (afstandLR > grenzenLR [2] & & afstandLR
om (afstandVA > grenzenVA [1] & & afstandVAgrenzenLR [1] & & afstandLR nyckel = "";
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
utgång ter controle tijdens programeren/werking
Serial.Print ("BEREKENDE POSITIE");
Serial.Print(Key);
Serial.println("");
}
void activeerToets() {
hier gaan vi över van de software naar de maskinvara, relais worden aangestuurd om zo een toestslag via een usb-toestenbord dörr te sturen naar de aangesloten dator
om (nyckel == "UP") {//activeer upp-relais
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
Delay(50);
digitalWrite (2, hög).
Delay(w-50);
}
annars om (nyckel == "DOWN") {//activeer down-relais
digitalWrite(2,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
Delay(50);
digitalWrite (3, hög).
Delay(w-50);
}
annars om (nyckel == "Vänster") {//activeer vänster-relais
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
Delay(50);
digitalWrite(4,LOW);
digitalWrite (4, hög).
Delay(w-50);
}
annars om (nyckel == "Rätt") {//activeer höger-relais
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
Delay(50);
digitalWrite(5,LOW);
digitalWrite 5, hög,
Delay(w-50);
}
}