Hallo Zusammen,
im Rahmen meiner Abschlussarbeit im Bereich Smart Clothes möchte ich ein intelligentes Kleid nähen, was bei Berührung textiler Sensoren LEDs (in Parallelschaltung) auslöst.
Als Mikrocontroller verwende ich das Arduino Lilypad.
Ich benutze haargenau diese Beschreibung und die dazugehörige Programmiersprache: https://www.arduino.cc/en/Tutorial/Button
An Stelle des "Buttons/Taster" habe ich einen textilen Sensor gebaut. Ich beschreibe euch kurz, wie es ungefähr aussieht. Ich habe "zwei Stofffetzen" aus leitendem, textilem Gewebe. Wenn sich beide Stoffe berühren, wird der Schaltkreis geschlossen und die Lichter gehen an.
Die eine Stoffhälfte ist mit 5V verbunden. Die andere Stoffhälfte mit PIN 2 und einem Widerstand (10K OHM). Der Widerstand ist mit GND verbunden. Also eigentlich so, wie in der Beschreibung des BUTTONS erklärt.
Als LEDs benutze ich die Lilypad LEDs mit integriertem Widerstand. Diese sind parallel geschaltet. Der Minuspol ist mit GND verbunden und der Pluspol mit PIN 12.
Da ich mehrere Sensoren in das Kleid integrieren möchte, verwende ich diesen Schaltkreis mehrmals. Also:
INPUT PIN 2 / OUTPUT PIN 12
INPUT PIN 3 / OUTPUT PIN 11
INPUT PIN 4 / OUTPUT PIN 10
INPUT PIN 5 / OUTPUT PIN 9
INPUT PIN 6 / OUTPUT PIN 8
Jetzt kommt meine Frage:
Muss ich unbedingt einen Widerstand mit einbauen? Ich habe nämlich gelesen, dass man bei der Programmierung einen PULL UP Widerstand aktivieren kann, und zwar, wenn man den Befehl DIGITALWRITE definiert. Verstehe ich das richtig, dass man dann kein Widerstand benötigt?
Ich habe es ohne Widerstand versucht und es funktioniert irgendwie nicht. Selbstverständlich habe ich auch darauf geachtet, dass sich die elektrisch leitenden Fäden im Kleid nicht berühren.
Ihr fragt euch bestimmt warum ich das Aufnähen von Widerständen vermeiden möchte...und zwar ist es nicht so einfach die Widerstände aufzunähen ohne dass sie sich im laufe der Zeit nicht vom Kleid lösen. Außerdem würde mir viel Arbeit erspart bleiben.
Ich füge einfach mal meine Programmierung mit ein. Vielleicht findet ihr den Fehler...
Herzlichen Dank im Voraus! Da ich ein Neuling bin und keine Ahnung und Erfahrung habe, freue ich mich über jede Hilfe.
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin1 = 2; // the number of the pushbutton pin
const int buttonPin2 = 3; // the number of the pushbutton pin
const int buttonPin3 = 4; // the number of the pushbutton pin
const int buttonPin4 = 5; // the number of the pushbutton pin
const int buttonPin5 = 6; // the number of the pushbutton pin
const int ledPin1 = 12; // the number of the LED pin
const int ledPin2 = 11; // the number of the LED pin
const int ledPin3 = 10; // the number of the LED pin
const int ledPin4 = 9; // the number of the LED pin
const int ledPin5 = 8; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() { // initialize the LED pin as an output:
pinMode(12, OUTPUT); //Pin als Ausgang
pinMode(11, OUTPUT); //Pin als Ausgang
pinMode(10, OUTPUT); //Pin als Ausgang
pinMode(9, OUTPUT); //Pin als Ausgang
pinMode(8, OUTPUT); //Pin als Ausgang
// initialize the pushbutton pin as an input:
pinMode(2, INPUT); //Pin als Eingang
pinMode(3, INPUT); //Pin als Eingang
pinMode(4, INPUT); //Pin als Eingang
pinMode(5, INPUT); //Pin als Eingang
pinMode(6, INPUT); //Pin als Eingang
}
void loop() {
buttonState = digitalRead(2); //Hier wird Pin4 ausgelesen
if(buttonState == HIGH) // wenn Schalter gedrückt ist
{
digitalWrite(12, HIGH); //dann soll Led leuchten
delay(1000); //und zwar für 1 Sekunde
} //Programmabschnitt des If- Befehls schließen
else { //ansonsten
digitalWrite(12, LOW);
}
buttonState = digitalRead(3); //Hier wird Pin3 ausgelesen
if(buttonState == HIGH) // wenn Schalter gedrückt ist
{
digitalWrite(11, HIGH); //dann soll Led leuchten
delay(1000); //und zwar für 1 Sekunde
} //Programmabschnitt des If- Befehls schließen
else { //ansonsten
digitalWrite(11, LOW);
}
buttonState = digitalRead(4); //Hier wird Pin2 ausgelesen
if(buttonState == HIGH) // wenn Schalter gedrückt ist
{
digitalWrite(10, HIGH); //dann soll Led leuchten
delay(1000); //und zwar für 1 Sekunde
} //Programmabschnitt des If- Befehls schließen
else { //ansonsten
digitalWrite(10, LOW); //danach soll die Led aus sein
}
buttonState = digitalRead(5); //Hier wird Pin1 ausgelesen
if(buttonState == HIGH) // wenn Schalter gedrückt ist
{
digitalWrite(9, HIGH); //dann soll Led leuchten
delay(1000); //und zwar für 1 Sekunde
} //Programmabschnitt des If- Befehls schließen
else { //ansonsten
digitalWrite(9, LOW); //danach soll die Led aus sein
}
buttonState = digitalRead(6); //Hier wird Pin1 ausgelesen
if(buttonState == HIGH) // wenn Schalter gedrückt ist
{
digitalWrite(8, HIGH); //dann soll Led leuchten
delay(1000); //und zwar für 1 Sekunde
} //Programmabschnitt des If- Befehls schließen
else { //ansonsten
digitalWrite(8, LOW); //danach soll die Led aus sein
}
}