Pages: 1 2 [3]   Go Down
Author Topic: fabriquer un controleur midi (footswitch)  (Read 3089 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci AlienArea51,
mais ou dois je mettre ces lignes au debut dans les constantes ou bien dans le void loop ?
j'ai essayer les 2 et ça met des erreurs ?
il faut pas oublier que je débarque complétement dans le code  smiley-sad-blue
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

et la dans ma fenêtre de contrôle max cela m'envoie toute les environs 500ms: 1,2,3,4,5,6,7,8,9,16,17,18,19,20,21,22,23,24,25,32,33,34,35.
 et quand j'appuie par exemple sur mon bp numero 1 (donc l'entrée digital 22) je trouve la même série sauf le 1 ? pareil pour le 2 etc.
Oups! Petit oublie de ma pars, j'avais oublié les pull-up sur les boutons, donc HIGH = Pas appuyé et LOW = Appuyé:
Code:
if(digitalRead(...)) {
...
=>
Code:
if(!digitalRead(...)) {
...
Je te conseille d'utiliser mon code, la version trés simplifié de "Mon club élect" est comment dire ... hummm, ça marche mais c'est pas propre du tout.
Juste le ! que j'avais oublié mais sinon le principe est le même.

Mais après réflexion, je me suis dit qu'il n'était pas important que je reçoive à tout pris un message midi, puisque je vais travailler directement avec un cable usb et non un cable midi.
Dans max/msp il suffirait que je récupère ne serais ce qu'un numéro, après ça je fait ma cuisine.
Fallait le dire plus tôt, effectivement ça rend la chose beaucoup plus simple smiley-kitty

Sinon pour ton map() :
Code:
int sensorValue = analogRead(A0);
sensorValue = map(sensorValue, 0, 1023, 35, 1058);
 Serial.println(sensorValue,DEC);
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
God Member
*****
Karma: 3
Posts: 677
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pardon et salut fabien
Tu m'as pris de court  smiley-lol



exemple :

Quote
void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 35, 1058);
  analogWrite(9, val);
}

@+
Logged

The truth is elsewhere !!

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

merci beaucoup Skywodd mais ça ce met ou dans le code l’état HIGH ou LOW ?
en tout cas pour la fonction map ça marche bien, les données bougent un peu avec le potard mais je peux stabiliser dans max.
Pascal
Logged

Offline Offline
God Member
*****
Karma: 3
Posts: 677
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pardon j'avais oublié d'enlever mon mode (transparence )
@+
Logged

The truth is elsewhere !!

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Désolé Alien, je te remercie aussi pour ta réponse smiley-red
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ça ce met ou dans le code l’état HIGH ou LOW ?
Par définition :
HIGH = 1 = true
LOW = 0 = false
donc, if(digitalRead(n) == HIGH) est équivalent à if(digitalRead(n))
de même if(digitalRead(n) == LOW) est équivalent à if(!digitalRead(n)).
Je sais pas si j'ai répondu à ta question smiley-confuse

@AlienArea51: t'as était moins féniasse que moi, t'as rajouter loop() dans ton exemple smiley-mr-green

Quote
les données bougent un peu avec le potard mais je peux stabiliser dans max
Si tu veux limiter au maximum les variations tu peut t'inspirer de cet exemple :
http://www.arduino.cc/en/Tutorial/Smoothing
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut a tous,
j'ai enfin fabriquer la chose:
http://s.joomeo.com/4f0db794af90b

Tout vas bien, ça marche  smiley-razz mise à part que :

1- je n'ai pas réussi à utiliser le code de skywodd, j'ai donc utiliser le code très simple de "mon code electrique".
2- quand je rajoute les lignes de commande du potentiomètre cela ralenti les données , en effet quand j'appuis sur un BP il y a une latence de au moins plus ou moins 30millisecondes ?
cela viens surement de mon code?
j'ai été obligé pour une question pratique de faire une map pour le potentiomètre :

sensorValue = map(sensorValue, 0, 1023, 4023, 3000);

et donc pour me retrouver en sortie de mon câble série avec le même nombre de chiffres ( car sinon si je met par exemple 01 pour le BP1 en sortie (dans max)je me retrouve avec 4 nombres et quand je tourne mon potar je me retrouve avec 6 nombres), j'ai donc écrit  2001 pour le BP1, 2002 etc...

encore merci pour tout ces bons conseils.
pascal



Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1- je n'ai pas réussi à utiliser le code de skywodd, j'ai donc utiliser le code très simple de "mon code electrique".
BouOuOu smiley-cry
nan je rigole, tu fait bien comme tu veux, le principal c'est que tu comprenne ce que tu a codé pour pouvoir réutiliser ce que tu a appris plus tard smiley-wink

2- quand je rajoute les lignes de commande du potentiomètre cela ralenti les données , en effet quand j'appuis sur un BP il y a une latence de au moins plus ou moins 30millisecondes ?
Tu peut poster les deux version du codes histoires qu'on regardent ce qui pourrait causer ce bug ?
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
Je n'arrive pas à envoyer le code, cela dépasse les 9500 caractères ? smiley-eek-blue
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je n'arrive pas à envoyer le code, cela dépasse les 9500 caractères ? smiley-eek-blue
Essaye d'envoyer les deux code en deux post séparé ça devrait passer, sinon tu peut utiliser pastbin.com smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

donc voici le code qui me donne du retard avec les BP.

Code:
const int APPUI=LOW;



const int BP_1=22; // Constante pour la broche 2
const int BP_2=23; // Constante pour la broche 3
const int BP_3=24; // Constante pour la broche 4
const int BP_4=25; // Constante pour la broche 5
const int BP_5=26; // Constante pour la broche 6
const int BP_6=27; // Constante pour la broche 2
const int BP_7=28; // Constante pour la broche 3
const int BP_8=29; // Constante pour la broche 4
const int BP_9=30; // Constante pour la broche 5
const int BP_10=31; // Constante pour la broche 6
const int BP_11=32; // Constante pour la broche 2
const int BP_12=33; // Constante pour la broche 3
const int BP_13=34; // Constante pour la broche 4
const int BP_14=35; // Constante pour la broche 5
const int BP_15=36; // Constante pour la broche 6
const int BP_16=37; // Constante pour la broche 2
const int BP_17=38; // Constante pour la broche 3
const int BP_18=39; // Constante pour la broche 4
const int BP_19=40; // Constante pour la broche 5
const int BP_20=41; // Constante pour la broche 6
const int BP_21=42; // Constante pour la broche 3
const int BP_22=43; // Constante pour la broche 4
const int BP_23=44; // Constante pour la broche 5
const int BP_24=45; // Constante pour la broche 6


void setup()   { // debut de la fonction setup()



Serial.begin(9600); // initialise connexion série à 115200 bauds



 pinMode (BP_1,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_2,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_3,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_4,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_5,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_6,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_7,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_8,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_9,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_10,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_11,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_12,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_13,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_14,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_15,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_16,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_17,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_18,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_19,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_20,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_21,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_22,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_23,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_24,INPUT); // Broche BP_5 configurée en entrée


 
 digitalWrite (BP_1,HIGH); // Rappel au + activé sur la broche BP_1 configurée en entrée
 digitalWrite (BP_2,HIGH); // Rappel au + activé sur la broche BP_2 configurée en entrée
 digitalWrite (BP_3,HIGH); // Rappel au + activé sur la broche BP_3 configurée en entrée
 digitalWrite (BP_4,HIGH); // Rappel au + activé sur la broche BP_4 configurée en entrée
 digitalWrite (BP_5,HIGH); // Rappel au + activé sur la broche BP_5 configurée en entrée
 digitalWrite (BP_6,HIGH); // Rappel au + activé sur la broche BP_1 configurée en entrée
 digitalWrite (BP_7,HIGH); // Rappel au + activé sur la broche BP_2 configurée en entrée
 digitalWrite (BP_8,HIGH); // Rappel au + activé sur la broche BP_3 configurée en entrée
 digitalWrite (BP_9,HIGH); // Rappel au + activé sur la broche BP_4 configurée en entrée
 digitalWrite (BP_10,HIGH); // Rappel au + activé sur la broche BP_5 configurée en entrée
 digitalWrite (BP_11,HIGH); // Rappel au + activé sur la broche BP_1 configurée en entrée
 digitalWrite (BP_12,HIGH); // Rappel au + activé sur la broche BP_2 configurée en entrée
 digitalWrite (BP_13,HIGH); // Rappel au + activé sur la broche BP_3 configurée en entrée
 digitalWrite (BP_14,HIGH); // Rappel au + activé sur la broche BP_4 configurée en entrée
 digitalWrite (BP_15,HIGH); // Rappel au + activé sur la broche BP_5 configurée en entrée
 digitalWrite (BP_16,HIGH); // Rappel au + activé sur la broche BP_1 configurée en entrée
 digitalWrite (BP_17,HIGH); // Rappel au + activé sur la broche BP_2 configurée en entrée
 digitalWrite (BP_18,HIGH); // Rappel au + activé sur la broche BP_3 configurée en entrée
 digitalWrite (BP_19,HIGH); // Rappel au + activé sur la broche BP_4 configurée en entrée
 digitalWrite (BP_20,HIGH); // Rappel au + activé sur la broche BP_5 configurée en entrée
 digitalWrite (BP_21,HIGH); // Rappel au + activé sur la broche BP_2 configurée en entrée
 digitalWrite (BP_22,HIGH); // Rappel au + activé sur la broche BP_3 configurée en entrée
 digitalWrite (BP_23,HIGH); // Rappel au + activé sur la broche BP_4 configurée en entrée
 digitalWrite (BP_24,HIGH); // Rappel au + activé sur la broche BP_4 configurée en entrée


}

void loop(){ // debut de la fonction loop()




if (digitalRead(BP_1)==APPUI){
 Serial.println(2001);
 delay(500);
}

if (digitalRead(BP_2)==APPUI){
 Serial.println(2002);
  delay(500);
}

if (digitalRead(BP_3)==APPUI){
 Serial.println(2003);
  delay(500);
}

if (digitalRead(BP_4)==APPUI){
 Serial.println(2004);
  delay(500);
}

if (digitalRead(BP_5)==APPUI){
 Serial.println(2005);
  delay(500);
}

if (digitalRead(BP_6)==APPUI){
 Serial.println(2006);
 delay(500);
}

if (digitalRead(BP_7)==APPUI){
 Serial.println(2007);
  delay(500);
}

if (digitalRead(BP_8)==APPUI){
 Serial.println(2008);
  delay(500);
}

if (digitalRead(BP_9)==APPUI){
 Serial.println(2009);


if (digitalRead(BP_10)==APPUI){
 Serial.println(2010);
  delay(500);
}
if (digitalRead(BP_11)==APPUI){
 Serial.println(2011);
 delay(500);
}

if (digitalRead(BP_12)==APPUI){
 Serial.println(2012);
  delay(500);
}

if (digitalRead(BP_13)==APPUI){
 Serial.println(2013);
  delay(500);
}

if (digitalRead(BP_14)==APPUI){
 Serial.println(2014);
  delay(500);
}

if (digitalRead(BP_15)==APPUI){
 Serial.println(2015);
  delay(500);
}
if (digitalRead(BP_16)==APPUI){
 Serial.println(2016);
 delay(500);
}

if (digitalRead(BP_17)==APPUI){
 Serial.println(2017);
  delay(500);
}

if (digitalRead(BP_18)==APPUI){
 Serial.println(2018);
  delay(500);
}

if (digitalRead(BP_19)==APPUI){
 Serial.println(2019);
  delay(500);
}

if (digitalRead(BP_20)==APPUI){
 Serial.println(2020);
  delay(500);
}
if (digitalRead(BP_21)==APPUI){
 Serial.println(2021);
  delay(500);
}

if (digitalRead(BP_22)==APPUI){
 Serial.println(2022);
  delay(500);
}

if (digitalRead(BP_23)==APPUI){
 Serial.println(2023);
  delay(500);
}

if (digitalRead(BP_24)==APPUI){
 Serial.println(2024);
  delay(500);
}

int sensorValue = analogRead(A0);
sensorValue = map(sensorValue, 0, 1023, 4023, 3000);
 Serial.println(sensorValue,DEC);
//while(1); // stop loop

}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

et voici celui qui marche bien, sans le potentiomètre:


Code:
const int APPUI=LOW;

const int BP_1=22;
const int BP_2=23;
const int BP_3=24;
const int BP_4=25;
const int BP_5=26;
const int BP_6=27;
const int BP_7=28;
const int BP_8=29;
const int BP_9=30;
const int BP_10=31;
const int BP_11=32;
const int BP_12=33;
const int BP_13=34;
const int BP_14=35;
const int BP_15=36;
const int BP_16=37;
const int BP_17=38;
const int BP_18=39;
const int BP_19=40;
const int BP_20=41;
const int BP_21=42;
const int BP_22=43;
const int BP_23=44;
const int BP_24=45;




void setup()   { // debut de la fonction setup()


Serial.begin(9600); // initialise connexion série à 115200 bauds

 pinMode (BP_1,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_2,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_3,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_4,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_5,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_6,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_7,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_8,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_9,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_10,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_11,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_12,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_13,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_14,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_15,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_16,INPUT); // Broche BP_1 configurée en entrée
 pinMode (BP_17,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_18,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_19,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_20,INPUT); // Broche BP_5 configurée en entrée
 pinMode (BP_21,INPUT); // Broche BP_2 configurée en entrée
 pinMode (BP_22,INPUT); // Broche BP_3 configurée en entrée
 pinMode (BP_23,INPUT); // Broche BP_4 configurée en entrée
 pinMode (BP_24,INPUT); // Broche BP_5 configurée en entrée



 digitalWrite (BP_1,HIGH);
 digitalWrite (BP_2,HIGH);
 digitalWrite (BP_3,HIGH);
 digitalWrite (BP_4,HIGH);
 digitalWrite (BP_5,HIGH);
 digitalWrite (BP_6,HIGH);
 digitalWrite (BP_7,HIGH);
 digitalWrite (BP_8,HIGH);
 digitalWrite (BP_9,HIGH);
 digitalWrite (BP_10,HIGH);
 digitalWrite (BP_11,HIGH);
 digitalWrite (BP_12,HIGH);
 digitalWrite (BP_13,HIGH);
 digitalWrite (BP_14,HIGH);
 digitalWrite (BP_15,HIGH);
 digitalWrite (BP_16,HIGH);
 digitalWrite (BP_17,HIGH);
 digitalWrite (BP_18,HIGH);
 digitalWrite (BP_19,HIGH);
 digitalWrite (BP_20,HIGH);
 digitalWrite (BP_21,HIGH);
 digitalWrite (BP_22,HIGH);
 digitalWrite (BP_23,HIGH);
 digitalWrite (BP_24,HIGH);


}

void loop(){ // debut de la fonction loop()



if (digitalRead(BP_1)==APPUI){
 Serial.println(11); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
 delay(200);
}

if (digitalRead(BP_2)==APPUI){
 Serial.println(12); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_3)==APPUI){
 Serial.println(13); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_4)==APPUI){
 Serial.println(14); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_5)==APPUI){
 Serial.println(15); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}
if (digitalRead(BP_6)==APPUI){
 Serial.println(16); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
 delay(200);
}

if (digitalRead(BP_7)==APPUI){
 Serial.println(17); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_8)==APPUI){
 Serial.println(18); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_9)==APPUI){
 Serial.println(19); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_10)==APPUI){
 Serial.println(20); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}
if (digitalRead(BP_11)==APPUI){
 Serial.println(21); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
 delay(200);
}

if (digitalRead(BP_12)==APPUI){
 Serial.println(22); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_13)==APPUI){
 Serial.println(23); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_14)==APPUI){
 Serial.println(24); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_15)==APPUI){
 Serial.println(25); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}
if (digitalRead(BP_16)==APPUI){
 Serial.println(26); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
 delay(200);
}

if (digitalRead(BP_17)==APPUI){
 Serial.println(27); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_18)==APPUI){
 Serial.println(28); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_19)==APPUI){
 Serial.println(29); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_20)==APPUI){
 Serial.println(30); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}
if (digitalRead(BP_21)==APPUI){
 Serial.println(31); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_22)==APPUI){
 Serial.println(32); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_23)==APPUI){
 Serial.println(33); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}

if (digitalRead(BP_24)==APPUI){
 Serial.println(34); // envoie la valeur vers le PC (Processing) suivie d'un saut de ligne
  delay(200);
}


//while(1); // stop loop

}

merci
Pascal
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Forcément que tu as un temps de latence bien plus important avec le 1er code puisque tu as un delay(500) à la place du delay(200) du 2eme code !
En tout cas ce n'est pas map() qui ralentit ton programme, c'est juste que tu à un delai 2.5 fois plus grand smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: 1 2 [3]   Go Up
Jump to: