Nur Veggin mit einer Arduino Beetbox

Nur Veggin mit einer Arduino Beetbox - Gunook

Bringen Sie Touch Control zum Arduino. Verwenden Sie interessante Berührungssensoren wie Karotten oder Rüben, um eine "Beetbox" zu erstellen.

In diesem instructable lernen Sie:

* Wie Sie die Cap Sense-Bibliothek verwenden, um Arduino berührungsempfindlich zu machen
* Wie man einen Wellenschild (und etwas Wurzelgemüse) hinzufügt, kann man eine "Beetbox" machen



Zubehör:

Schritt 1: Sie benötigen

Für den Touch Sensor benötigen Sie:
* Arduino UNO
* Ein 4,7 M Ohm Widerstand (oder ein ähnlicher Wert) (einer für jeden Sensorkanal)
* Steckbrett zum Verdrahten von z.B. (http://goo.gl/1E1iI)
* Einige Drähte

Für ein erstes Experiment, um zu zeigen, wie die Berührungserkennung funktioniert:
* Eine LED
* ein 560 Ohm Widerstand

Für den Teil "Beetbox":
* Einige Wurzelgemüse (wie eine Zuckerrübe)
* Ein Adafruit Wave Shield wie abgebildet http://goo.gl/KUUZz
* Die WaveHC-Bibliothek für Arduino (http://www.ladyada.net/make/waveshield/download.html)


Schritt 2: Die Prinzipien der kapazitiven Berührungserkennung

Für die Beetbox verwenden wir drei Sensorkanäle.

Zu Beginn implementieren wir einen Berührungserkennungskanal und aktivieren eine LED, wenn Arduino eine Berührung erkennt.

Verdrahten Sie die Schaltung wie in den Fritzing-Diagrammen und Fotos gezeigt.

Laden Sie die Capacitive Sense-Bibliothek für Arduino hier herunter und installieren Sie sie: http://goo.gl/EpSX0


Schritt 3: So funktioniert der Kondensator

Die Cap-Sense-Schaltung wird durch den Widerstand zwischen den Arduino-Pins 6 und 9 sowie die Kapazität gegen Masse am Berührungssensor hergestellt. Wenn die CapacitiveSensor arduino-Bibliothek aufgefordert wird, den Sensorwert zu lesen, werden Impulse an Pin 9 ausgegeben und an Pin 6 eingegeben. Die Bibliotheksroutine misst die Verzögerung zwischen dem Senden und dem Empfangen der Impulse.

Die gemessene Verzögerung ist proportional zu dem Widerstandswert R und der Kapazität C. d. H. Verzögerung = R * C
(Genau genommen gibt es auch einen Skalierungsfaktor, der von dem Spannungspegel abhängt, von dem aus Sie messen, aber das ist nur ein Detail für uns).


Die Kapazität des Sensors variiert, wenn Sie Ihren Finger in die Nähe des Sensors bringen und ihn berühren. Durch Berühren des Sensors erhalten Sie die größte Kapazität und die längste Verzögerung. Um die Verzögerung groß genug zu machen, um von Arduino erkannt zu werden, benötigen Sie einen großen Widerstand, z. 4,7 Megaohm.

Schritt 4: Arduino-Code: Schlüsselkonzepte

Es gibt ein paar Schlüsselkonzepte im Arduino-Code.

1. Aktivieren Sie eine LED, wenn der Sensor berührt wird.

Dazu müssen wir die Verzögerung messen (total1) und vergleiche es mit einem Schwellenwert, z.B.

=============

void setup ()
{
.... einige Setup-Sachen ....
}

leere Schleife ()
{
total1 = cs_9_6.capacitiveSensor (30); // Den Cap Sense-Wert vom Sensor messen

if (total1> THRESHOLD) {
digitalWrite (LedPin, HIGH);
}  
sonst {
digitalWrite (LedPin, LOW);
}
}


=======

Das ist ziemlich einfach. Aber wie hoch sollte der THRESHOLD-Wert sein?

Das total1 Der Wert der Verzögerung, die wir zurücklesen, variiert von Tag zu Tag, da er sehr kapazitätsempfindlich ist (was die ganze Idee ist). Dies bedeutet jedoch, dass wir keinen festen THRESHOLD-Wert eingeben können, da er unter verschiedenen Bedingungen unterschiedlich sein wird.

Um sicherzustellen, dass wir einen geeigneten THRESHOLD-Wert haben, müssen wir den THRESHOLD-Wert während einer Kalibrierungssequenz am Anfang des Codes messen.

Wir machen das wie folgt. Wir initialisieren i = 0 während Konfiguration() und kalibrieren Sie für die ersten 50 Iterationen von Schleife(). Die LED blinkt während der Kalibrierung und wir müssen Berühren Sie den Sensor um den entsprechenden THRESHOLD-Wert zu bestimmen.

=======

leere Schleife ()

total1 = cs_9_6.capacitiveSensor (30);
// Den Cap Sense-Wert vom Sensor messen

// Berühren Sie den Sensor, während die LED HOCH ist, um den TOUCH-Wert zu kalibrieren
if (i <50) { // Sensorgrundlinie auf Start kalibrieren
digitalWrite (LedPin, HIGH);
calVal1 = 0,1 * float (total1) + 0,9 * calVal1;
Serial.println (calVal1);
// Kalibrierungswert während des Kalibrierungszyklus drucken
Verzögerung (50);
digitalWrite (LedPin, LOW);
Verzögerung (50);
i ++;
}
}


=======

Der Code:
calVal1 = 0,1 * float (total1) + 0,9 * calVal1;

implementiert einen digitalen Filter. Es funktioniert, indem es seinen Output zu 90% zugunsten alter Outputs gewichtet. neue Daten machen nur eine Gewichtung von 10% aus. Dies gibt uns einen zuverlässigen Kalibrierungswert, calVal1 durch Herausfiltern von Störgeräuschen auf den Messwerten.
Im Code drucken wir die calVal1 zum seriellen Monitor. Schauen Sie es sich an, um zu sehen, wie es sich sanft in Richtung erhöht total1 Wert.

Das Nächster Schritt zeigt den vollständigen Arduino-Code für dieses Experiment

Schritt 5: Arduino-Code (Experiment)

Schritt 6: Hinzufügen von Sound mit dem Wave Shield

Wenn wir weiter gehen und Sound hinzufügen möchten, befestigen Sie das Wave Shield am Arduino.

Ich habe drei Cap Sense-Kanäle an den Pins 6, 7 und 8 verwendet.

Legen Sie einige WAV-Dateien auf die Soundkarte. Ich habe "BUFF1.WAV" usw. verwendet, wie im Code gezeigt.

Fügen Sie etwas Gemüse der Wahl hinzu und los geht's .....

Vollständiger Arduino-Code in der Nächster Schritt.

Es ist dem Einkanal-Beispiel sehr ähnlich, wobei einige Routinen zum Lesen und Wiedergeben von SD-Kartendateien hinzugefügt wurden.

Der Code verwendet die #define DEBUG konstruieren, um einige Serial Monitor-Ausgaben zum Debuggen hinzuzufügen. Kommentieren Sie diese Zeile zum Debuggen aus.

Der Kalibrierungszyklus in dieser Version ist wie folgt:
1. LED AN: Berühren Sie den Sensor von Kanal 1
2. LED AUS: Berühren Sie den Sensor von Kanal 2
3. LED AN: Berühren Sie den Sensor von Kanal 3
4. Viel Spaß beim Spielen Ihrer Beetbox

Schritt 7: Vollständiger Arduino Beetbox-Code

Schritt 8: Nächste Schritte

Warum nicht die kapazitive Berührungserkennung erweitern?

* Verwenden Sie einen höheren Widerstandswert, um zu erkennen, wann Sie sich in der Nähe des Sensors befinden, und nicht nur, wenn Sie ihn berühren.

* Machen Sie ein Geräusch, das sich in der Tonhöhe ändert, wenn Sie sich dem Sensor nähern.

* Verwenden Sie eine Matrix von Sensoren, um die Position Ihres Fingers auf einer Oberfläche zu erfassen (ein Smartphone-Touchscreen funktioniert so).