Arduino RC bil med FPV Camera (13 / 15 steg)
Steg 13: Accelerometer + XBox 360 Controller vibrationer
Accelerometrar används för att mäta acceleration i en eller flera axlar, så jag trodde det skulle vara roligt att sätta en i bilen. Jag la en Adafruit ADXL335 3-axlig accelerometer för att mäta acceleration på bilen, så att kollisioner upptäcks och orsaka XBox-handkontrollen till vibrera/Muller. Denna accelerometer ger sina mätningar som 3 separata analoga ingångar till Arduino. Mätningar är- / + 3 g, som mappar till 0 - 3.3V. Eftersom max spänningen är endast 3.3V, de 3.3V referens pin ombord accelerometer var ansluten till den Arduino extern referens stift.
Arduino läser accelerometer värden, för varje iteration av de viktigaste loop, och sparar värdena. Arduino skiss jämför de nuvarande accelerationsvärdena med sparade värden. Om skillnaden överstiger ett tröskelvärde, skrivs tecknet "R" till den Arduino seriella produktionen strängen, att indikera att registeransvarige bör rumble. Om skillnaden är för liten, är tecknet "O" skriven till Arduinos seriell utgång.
C# programmet får följetong strängen från Arduino. Om den hittar tecknet "R", anges en "countdown" flaggan (rumblecount), att indikera att registeransvarige bör rumble. Varje XBox controller "frame" kontrolleras status för denna flagga. Om det är över noll, controller mullret aktiveras, och "rumblecount" minskas. På varje efterföljande ram, controller kommer mullra tills flaggan nedräkningen når noll. Anledningen till denna nedräkning flagga är att den registeransvarige att mullra i minst flera bildrutor, eftersom en enda bildruta är alltför snabba att märka (ca 20ms).
Med nuvarande tröskelvärdena i Arduino skiss, kommer registeransvarige rumble bilen kraschar in i något, rullar över, går över stora hinder eller enheter i trappan. Det kommer också rumble regelbundet när man kör över gräs, men inte på slät betong, så på ett sätt du kan få en känsla för terrängen genom registeransvarige. Det mullrar även vid full gas eller full omvänd.
Anteckning om XBox 360 controller vibrationer: det finns två vibrationer motorer - en är lågfrekvent och den andra är en högre frekvens. Intensiteten av vibrationer kan även styras exakt (det använder ett flöte för intensitet), så du kunde få ett mycket brett utbud av rumble effekter (som någon som har använt en XBox / Playstation redan vet). Mitt program inte utnyttja dessa avancerade funktioner, eftersom det tar för lång tid att programmera och kräver för mycket ansträngning...:-P