Stap 10: Arduino Sketch voor tuimelschakelaar
Ik wil de clamshell te gedragen als een echte stompbox, dus heb ik besloten om een tuimelschakelaar volgende. Ik gebruikte de monster sketch, "Klop", uit de "Sensoren" voorbeelden.
Deze maakt gebruik van de dezelfde bedrading als de "IfStatementConditional" hierboven. Echter, voordat ik de schets geladen, maakte ik een kleine verandering:
Serial.println("knock!");
wordt
Serial.println(sensorReading);
Dit kan ik zie de waarden de Arduino leest uit de clamshell.
Na het verifiëren en laden de schets, opende ik de seriële monitor. Nu elke keer als ik onttrok op clamshell, de ingebouwde leidde op pin 13 in- of uitschakelen van een knevel gevoorzid. Bovendien is de sensor zelf lezen verscheen in de seriële monitor.
Het werkte goed, maar ik merkte dat de monitor verschillende lezingen voor elke kraan of geen soms helemaal terug. Dus ik speelde met de vertragingswaarde, en gevarieerd hoe snel ik was te tikken op de schakelaar met mijn voet. Een vertraging van 150 leek te werken beste voor mij.
Net als met de eerste schets, de drempelwaarde is de sleutel: als het niet werkt, controleert u of het nummer toegewezen aan "drempel" is veel lager dan de sensor lezen van getallen in de monitor.
Hier is de schets, een kleine variatie op Knock!, die ik bel Stomp_Toggle. Als je eenmaal de werking van de schakelaar, kunt u knip en plak de code in elke schets die je leuk.
/ * Stomp/uitschakelen
Deze sketch leest de clamshell variabele weerstand gebruikt als een stomp-schakelaar.
Een analoge pin leest en vergelijkt het resultaat met een ingestelde drempel resultaat.
Als het resultaat groter dan de drempel is, schrijft het
de waarde naar de seriële poort, en schakelt de LED op pin 13.
Het circuit:
* Een lood van de clamshell gekoppeld aan A0
* Andere leiding van clamshell aangesloten op de 5V op de Arduino
* De 10K weerstand aangesloten van analogon in 0 op de grond
http://www.Arduino.CC/en/tutorial/knock
gemaakt van 25 maart 2007
door David Cuartielles < http://www.0j0.org>
gemodificeerde 30 Aug 2011
door Tom Igoe
gemodificeerde 10 Dec 2013
door Jesse Seay
Deze voorbeeldcode is in het publieke domein.
*/
Deze constanten niet gewijzigd:
Const int ledPin = 13; aangesloten op digital pin 13 geleid
Const int knockSensor = A0; de clamshell is aangesloten op de analoge pin 0
Const int drempel = 500; drempelwaarde om te beslissen wanneer de gedetecteerde druk schakelt u de schakelaar
deze variabelen zal veranderen:
int sensorReading = 0; variabele de waarde gelezen van de pin van de sensor opslaan
int ledState = laag; variabele gebruikt voor het opslaan van de laatste LED-status, als u wilt schakelen het licht
VOID Setup {}
pinMode (ledPin, OUTPUT); de ledPin verklaren als OUTPUT
Serial.begin(9600); de seriële poort gebruiken
}
void loop {}
Lees de sensor en sla het in de variabele sensorReading:
sensorReading = analogRead(knockSensor);
Als de sensorgegevens groter dan de drempel is:
Als (sensorReading > = drempel) {}
de status van de ledPin in-of uitschakelen:
ledState =! ledState;
de LED-pin zelf bijwerken:
digitalWrite (ledPin, ledState);
Stuur de sensorgegevens terug naar de computer, gevolgd door newline
Serial.println(sensorReading);
}
delay(150); vertraging om te voorkomen dat overbelasting van de buffer van de seriële poort
}