Fait avec 2 télémètres à ultrasons (SRF02), vieux mac-clavier & 1 Arduino Uno.
Schoolproject (cours : mécatronique), Kortrijk école de Design industriel.
Sur le site de TIII (Interfaces Interactive Intuitive tangibles), vous pouvez trouver inspiration et autres Arduino projets basés (c’est en Néerlandais, mais visuellement, vous obtiendrez le point).
Voir l’instructable pour le hacking : piratage d’un clavier USB
Code de l’Arduino :
MATHIEU LEFEBVRE & YORICK STUYTS
2011-2012 : MECHATRONIA
LAAD bibliothèques voor communicatie met ultrasoon sensor SRF02
#include < Wire.h >
#include < SRF02.h >
int w = 300 ;
Créez une nouvelle instance d’un capteur de SRF02 avec le mode spécifié (7 bits) dispositif d’id et de mesure (SRF02_INCHES, SRF02_CENTIMETERS, SRF02_MICROSECONDS).
SRF02 srf02 [2] = {}
SRF02 (0 X 70, SRF02_CENTIMETERS),
SRF02 (0X71, SRF02_CENTIMETERS)
};
variabelen nodig voor positiemeting
int afstandVA = 0 ;
int afstandLR = 0 ;
lecture int = 0 ;
variabelen nodig voor positiebepaling
Clé de chaîne = « 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 (liens/rechts)
void setup() {}
Wire.Begin() ; Joignez-vous à bus i2c (adresse facultatif pour maître)
Serial.Begin(9600) ; commencer la communication série à 9600bps
SRF02::setInterval(70) ; valeur par défaut est 70
broche x = > relais x = > toetsslag = > PC/MAC
pinMode (sortie 2) ; VERS LE HAUT
pinMode (3, sortie) ; VERS LE BAS
pinMode (sortie 4) ; GAUCHE
pinMode (5, sortie) ; DROIT
}
void loop() {}
meetAfstand() ; afstanden tot alle sensoren
berekenPositie() ; berekendde positie met behulp van de gemeten afstanden
positie van coordinaat
fr ken een toets toe aan een bepaalde positie
activeerToets() ; Hue toets via :
optie 1: relais = > toetsenbord = > usbkabel = > PC, de correcte relais wordt aangestuurd
}
void meetAfstand() {}
gaan hier nous sur van naar logiciels
Code : http://www.grapelabs.org/arduino/libraries/srf02-ultrasonic-distance-sensor
EERSTE LEZING
SRF02::Update() ;
afstandVA=srf02[0].read() ;
afstandLR=srf02[1].read() ;
sortie van de lezingen na storings-controle
Serial.Print (« VA: ") ;
Serial.Print(afstandVA) ;
Serial.Print ("LR:") ;
Serial.Print(afstandLR) ;
Serial.Print("") ;
}
void berekenPositie() {}
Deze functie berekend de positie fr kent een toests toe aan een welbepaalde positie
berekening positie : vooruit, achteruit, liens & rechts
Si (afstandVA > grenzenVA [0] & & afstandVA si (afstandVA > grenzenVA [2] & & afstandVA si (afstandLR > grenzenLR [0] & & afstandLR si (afstandLR > grenzenLR [2] & & afstandLR
Si (afstandVA > grenzenVA [1] & & afstandVAgrenzenLR [1] & & afstandLR key = "" ;
digitalWrite(2,LOW) ;
digitalWrite(3,LOW) ;
digitalWrite(4,LOW) ;
digitalWrite(5,LOW) ;
}
sortie ter tijdens de controle programeren/werking
Serial.Print ("POSITIE BEREKENDE") ;
Serial.Print(Key) ;
Serial.println("") ;
}
void activeerToets() {}
gaan hier nous sur van de logiciel naar de matériel, relais worden aangestuurd om zo een toestslag via een usb-toestenbord door te sturen naar de aangesloten ordinateur
Si (clé == « UP ») {//activeer up-relais
digitalWrite(3,LOW) ;
digitalWrite(4,LOW) ;
digitalWrite(5,LOW) ;
Delay(50) ;
digitalWrite (2, haut) ;
Delay(w-50) ;
}
ElseIf (clé == « DOWN ») {//activeer bas-relais
digitalWrite(2,LOW) ;
digitalWrite(4,LOW) ;
digitalWrite(5,LOW) ;
Delay(50) ;
digitalWrite (3, élevée) ;
Delay(w-50) ;
}
ElseIf (clé == « Gauche ») {//activeer gauche-relais
digitalWrite(2,LOW) ;
digitalWrite(3,LOW) ;
digitalWrite(5,LOW) ;
Delay(50) ;
digitalWrite(4,LOW) ;
digitalWrite (4, élevée) ;
Delay(w-50) ;
}
ElseIf (clé == « RIGHT ») {//activeer droit-relais
digitalWrite(2,LOW) ;
digitalWrite(3,LOW) ;
digitalWrite(4,LOW) ;
Delay(50) ;
digitalWrite(5,LOW) ;
digitalWrite (5, HIGH) ;
Delay(w-50) ;
}
}