Stap 6: Technische details...
Nou, heb ik nog een Klosje van geleidende draad te gebruiken. Het was gewoon sneller draad dit omhoog met traditionele methoden.
Flora loopt met 3.3V logica.
Mijn HC-SR04 ultrasone sensor draait op 5 volt en uitgangen hetzelfde.
Dus dit waar is Dangit Jim, ik '' m een kunstenaar, kinda, niet een elektrotechnisch ingenieur...
Wat dit betekent is dat u uw Flora kunt bak als u 5 volt logica apparaten gebruikt. Rondkijken iemand stelde een eenvoudige weerstand voltage divider circuit (anders logica converter chip/circuit) om u te geven iets goed genoeg voor werk van de regering.
Graaien dus via mijn ebay weerstand assortiment, ik kwam dicht bij iets dat werkte.
Voor de uitvoer van de sensor passeert de ECHO-lijn een 12K ohm weerstand op de data pin. Ook het voeden van de dezelfde gegevens pin is een weerstand van 22K ohm pullup van grond. Ik denk dat de reële waarden werden verondersteld te zijn 15K en 27K Ohm.
De TRIG trigger op de ultrasone sensor leek goed te werken op het ongewijzigd signaal uit de Flora.
Ik deed het zelfde ding met de LDR- of fotocel aangezien ik ging voor het aandrijven van die omhoog met de ruwe spanning van de accu.
De fundamentele theremin schets was aangepast zodat het geluid uit op basis van de lezing van de utrasonic-sensor en dan geluid uit opnieuw op basis van input van de fotocel.
U kon om het even wat de theremin met geen andere keuze voor sensors - stretch, druk, aanraakgevoelige naderingssensoren, interface.
Nogmaals, gebaseerd op ervaring, ik was in staat om de kabellengte tot twee LEDs met 130 ohm weerstanden voor iedere uitgang gegevens pin te knipperen lichten.
Natuurlijk, ik zou hebben gegooid in een laserdiode of twee in het circuit voor de lol maar you gonna nemen een oogje.
Het verwijderen van de seriële afdrukken en aanpassen van alle vertragingen zou geven een meer ongerasterde halftonen.
Ik zet gewoon de standaardwaarden in de plaats van het doen van de ultrasone sensor kalibratie systeem.
Experimenteer met de waarden voor het detectiebereik van de sensoren en het frequentiebereik van het geluid.
Er zijn sommige monster schetsen daar wilt toewijzen aan de gevestigde muzikale tonen.
Dit alles was prototyped op het breadboard.
U kunt vervolgens het circuit overbrengen naar de beha door het creëren van de benodigde kabels afhankelijk van waar elk onderdeel op de beha is vastgemaakt.
Unoptimized code volgt
===============================================================================
/ * Ping))) Sensor
Deze sketch leest een PING))) ultrasone afstandsmeter en geeft als resultaat de
afstand tot het dichtstbijzijnde object in bereik. Om dit te doen, stuurt het een puls
aan de sensor te leiden van een lezing, luistert dan voor een pulse
om terug te keren. De lengte van de terugkerende puls is evenredig met
de afstand van het object van de sensor.
Het circuit:
* + V aansluiting van de PING))) gekoppeld aan + 5V
* GND aansluiting van de PING))) aangesloten op grond
* SIG aansluiting van de PING))) gekoppeld aan digitale pin 7
http://www.Arduino.CC/en/tutorial/ping
gemaakt van 3 Nov 2008
door David A. Mellis
gemodificeerde 30 Aug 2011
door Tom Igoe
Deze voorbeeldcode is in het publieke domein.
*/
mod voor HC-SR04 ultrasone sensor
Deze constante verandert niet. Het is het pin-nummer
van de sensor van de output:
Const int echoPin = 9; ECHO pin
Const int pingPin = 10; TRIG pin
variabele om waarde van de sensor te houden
int sensorValue;
variabele laagwaardige kalibreren
int sensorLow = 12;
variabele kalibreren van hoge waarde
int sensorHigh = 1;
int pdsPin = 11; Selecteer de invoer pin voor de fotocel
int pdsValue = 0; variabele de waarde vanuit de fotocel op te slaan
VOID Setup {}
seriële communicatiepoorten te initialiseren:
Serial.begin(9600);
pinMode(7,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);
}
void loop
{
pdsValue = analogRead(pdsPin); de waarde van de spanning krijgen van invoer pin
Serial.println(pdsValue); afdrukken van de waarde op seriële monitor
stellen variabelen voor de duur van de ping,
en het resultaat van de afstand in inches en centimeters:
lange duur, inch, cm;
De PING))) wordt geactiveerd door een hoge pols van 2 of meer microseconden.
Geef een korte lage puls vooraf om een schoon hoog puls:
pinMode (pingPin, OUTPUT);
digitalWrite (pingPin, laag);
delayMicroseconds(2);
digitalWrite (pingPin, hoge);
delayMicroseconds(5);
digitalWrite (pingPin, laag);
Dezelfde pincode wordt gebruikt voor het lezen van het signaal van de PING))): een hoog
Pulse waarvan de duur de tijd (in microseconden) van de verzending is
voor de ping naar de receptie van de echo off van een object.
pinMode (echoPin, INPUT);
duur = pulseIn (echoPin, hoge);
de tijd omzetten in een afstand
duim = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.Print(inches);
Serial.Print ("in");
Serial.Print(cm);
Serial.Print("cm");
Serial.println();
de ingang van de A0 leest en op te slaan in een variabele
sensorValue = inch;
de sensor-waardes toewijzen aan een groot aantal standplaatsen
int toonhoogte = kaart (sensorValue, sensorLow, sensorHigh, 2000, 3500);
int pitch2 = kaart (pdsValue, 200, 1023, 2400, 3500);
Speel de Toon voor 20 ms op pin 8
Toon (6, pitch, 90);
delay(30);
digitalWrite(7,HIGH);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
wachten op een moment
delay(90);
digitalWrite(7,LOW);
digitalWrite(3,LOW);
digitalWrite(2,LOW);
Toon (6, pitch2, 90);
delay(90);
}
lange microsecondsToInches(long microseconds)
{
Volgens de Parallax gegevensblad voor de PING))), er zijn
73.746 microseconden per inch (dwz geluid reist aan 1130 voeten per
seconde). Dit geeft de afstand die is afgelegd door de ping, uitgaande
en terug te keren, zodat wij door 2 delen te krijgen van de afstand van het obstakel.
Zie: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
retourneren van microseconden / 74 / 2;
}
lange microsecondsToCentimeters(long microseconds)
{
De snelheid van het geluid is 340 m/s of 29 microseconden per vierkante centimeter.
De ping reist uit en terug, zo vind je de afstand van de
we de helft van de afgelegde afstand nemen-object.
retourneren van microseconden / 29 / 2;
}