Arduino multi. bouton
-
Bonjours,
J'aimerais utiliser un Arduino pour changer mes scenes sur Isadora, mais j'ai un soucis dans la communication entre Arduino et Isadora, les premières valeur des boutons fonctionne mais après 5, 6 cela ne va plus!
Arduino
int analogPin1 = A0; int analogPin2 = A1; int analogPin3 = A2; int analogPin4 = A3; int analogPin5 = A4; int analogPin6 = A5; int analogPin7 = A6; int analogPin8 = A7; int ldrVal = 0; int threshold = 800; void setup() { Serial.begin(9600); pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); pinMode(11, INPUT); pinMode(12, INPUT); pinMode(13, INPUT); } void loop() { //Analog 0 (Num 4) ldrVal = analogRead(analogPin1); if ( ldrVal < threshold ) { Serial.println ("4"); delay(100); } //Analog 1 (Num 7) ldrVal = analogRead(analogPin2); if ( ldrVal < threshold ) { Serial.println ("7"); delay(100); } //Analog 2 (Num *) ldrVal = analogRead(analogPin3); if ( ldrVal < threshold ) { Serial.println ("10"); delay(100); } //Analog 3 (Num 5) ldrVal = analogRead(analogPin4); if ( ldrVal < threshold ) { Serial.println ("5"); delay(100); } //Analog 4 (Num 2) ldrVal = analogRead(analogPin5); if ( ldrVal < threshold ) { Serial.println ("2"); delay(100); } //Analog 5 (Num 0) ldrVal = analogRead(analogPin6); if ( ldrVal < threshold ) { Serial.println ("11"); delay(100); } //Analog 6 (Num 8) ldrVal = analogRead(analogPin7); if ( ldrVal < threshold ) { Serial.println ("8"); delay(100); } //Analog 7 (Num #) ldrVal = analogRead(analogPin8); if ( ldrVal < threshold ) { Serial.println ("12"); delay(100); }
//Digital 2 (Telephone)
int buttonState2 = digitalRead(2);
if (buttonState2 == LOW)
{
Serial.println ("20");
delay(100);
}
//Digital 3 (Touche A)
int buttonState3 = digitalRead(3);if (buttonState3 == LOW)
{
Serial.println ("18");
delay(100);
}
//Digital 4 (Touche Service)
int buttonState4 = digitalRead(4);if (buttonState4 == LOW)
{
Serial.println ("16");
delay(100);
}
//Digital 5 (Touche B)
int buttonState5 = digitalRead(5);if (buttonState5 == LOW)
{
Serial.println ("19");
delay(100);
}
//Digital 6 (Touche Belgacom)
int buttonState6 = digitalRead(6);if (buttonState6 == LOW)
{
Serial.println ("15");
delay(100);
}
//Digital 7 (Touche Proton)
int buttonState7 = digitalRead(7);if (buttonState7 == LOW)
{
Serial.println ("17");
delay(100);
}
//Digital 8 (Home)
int buttonState8 = digitalRead(8);if (buttonState8 == LOW)
{
Serial.println ("13");
delay(100);
}
//Digital 9 (Num 9)
int buttonState9 = digitalRead(9);if (buttonState9 == LOW)
{
Serial.println ("9");
delay(100);
}
//Digital 10 (Num 1)
int buttonState10 = digitalRead(10);if (buttonState10 == LOW)
{
Serial.println ("1");
delay(100);
}
//Digital 11 (Num 6)
int buttonState11 = digitalRead(11);if (buttonState11 == LOW)
{
Serial.println ("6");
delay(100);
}
//Digital 12 (Num 3)
int buttonState12 = digitalRead(12);if (buttonState12 == LOW)
{
Serial.println ("3");
delay(100);
}
//Digital 13 (Touche STOP)
int buttonState13 = digitalRead(13);if (buttonState13 == LOW)
{
Serial.println ("14");
delay(100);
}
}Isadora "Serial In Watcher - Binary"
"1"
value : integer = 4 digits
Voila si quelque peut m'aider.
Merci.
-
Hi,
Is it not working after 5,6 messages, or are buttons 5,6 and higher not working?
If you open the monitor window, is there serial data coming in?
-
@djoul123 said:
Bonjours,
J'aimerais utiliser un Arduino pour changer mes scenes sur Isadora, mais j'ai un soucis dans la communication entre Arduino et Isadora, les premières valeur des boutons fonctionne mais après 5, 6 cela ne va plus!
Voila si quelque peut m'aider.
Merci.Rough translation for my own benefit (and anyone else's):
Hello,
I would like to use an Arduino to change my scenes on Isadora, but I have a problem in the communication between Arduino and Isadora, the first value of the buttons works but after 5, 6 it does not go anymore!
Voila if any can help me.
Thank you.
-
Hey @djoul123 ,
c'est mieux de poster en anglais sur le forum pour avoir plus de réponses et que ce soit plus facile pour tout le monde de comprendre ;)
You're reassigning your ldrVal integer each time, maybe that could cause a problem, it would be better to create an array of integer to handle that.
I haven't be using arduino for some time, so beware of syntax errors from my side :)
int ldrVal[8]; int buttonState[11]; // it was working how you did, but easier like that and you should declare everything all your variable at the beginning void loop(){ for(int i = 0; i < 12; i++){ if( ldrVal[i]> threshold){ Serial.println(String(i)); //since you seem to want to send strings... delay(100); }
You can do the same with buttonState to make the code easier to read
-
Hi
Do you use any pull up/down resistors for buttons, how are they wired? Which Arduino board are you using?
-
what specific arduino board do you use ? analog pins could be used as digital inputs, in your sketch you use 20 inputs.
in isadora you use a filter inside of your serial in watcher // the 4 byte length message need to have a "1" to start with,
i think it is better to use a text based serial in watcher since you send a carriage return with each println already.
attached you will find an izzy file
best clemens
-
in your arduino code you cycle through your 20 pin readings always with a 0,1 s delay
that means you have to wait at least 2 seconds till the program will be again asking for the status of the button you just pushed.
I would recommend that you have a look how a keyboard matrix is setup, there should be plenty of infos on the arduino forum. That way you have a snappy arduino code to interact with isadora.
-
@m_theater How can I program a text?
-
I use resistors on the buttons, and I use a card arduino uno!