Radio Vintage Interfacée
Radio Vintage Interfacée avec un arduino et plein d'autres trucs
Contributeur·ice·s
Statut du projet
Experimental
Statut de la publication
License
Inspiration
Fichiers source
Machines
Matériaux
Lien
A partir de ce vieux poste Radio, je récupère les commandes de l'appareils pour piloter un arduino et d'autres appareils d'éclairages, sonores type walkman.
Deux potentiomètres sont glissés derrière la façade.
L'occasion de bricoler un peu et de tester les librairies arduino, voire les compatibilités avec Processing.
Pour récupérer les valeurs du potentiomètres, plusieurs techniques ont été testés.
La communication série.
et les fonctions boolean (http://arduino.cc/en/Reference/Boolean)
Le code rédigé aujourd'hui pour tester la sortie sur les pins digitales de l'arduino en vue de le raccorder à des optocoupleurs.
const int pot1 = 0; // potentiomètre sur pin analogique 0 const int pot2 = 2; // potentiomètre sur pin analogique 2 const int Led = 13; // led témoin intégrée à l'arduino pour le test
int valeur_pot_1; // variable to read the value from the analog pin
int valeur_pot_2;
void setup() {
pinMode(Led, OUTPUT); Serial.begin(57600);
}
void loop(){
test(); valeur_pot_1 = analogRead(0); //ou pot1 valeur_pot_2 = analogRead(pot2); delay(50 );
}
/**
*/
void test(){ if (valeur_pot_1 >= 800 && valeur_pot_1 <= 1000) // de 800 à 1000 sur le potentiomètre la LED 13 s'allume.
digitalWrite(Led, HIGH); if (valeur_pot_1 >= 500 && valeur_pot_1 <=799) digitalWrite(Led, LOW); if (valeur_pot_1 > 300 && valeur_pot_1 <= 499) digitalWrite(Led, HIGH); if (valeur_pot_1 >=1 && valeur_pot_1 <=299) digitalWrite(Led, LOW);
}
29 avril 2014 :
J'effectue des recherches dans les librairies de Processing, pour permettre à cette radio de jouer une trentaine de sons préenregistrés en fonction de la station choisi.
Ici des ressources sur la librairie Minim : [1]
Plusieurs codes à tester.
En fin de compte, je choisi de changer simplement d'arduino et d'utiliser un modèle Léonardo qui gère la fonction KeyboardPrint, un peu long pour moi de prendre en main la communication serial, processing.. Je choisi du presque tout fait via cette fonction arduino qui permet d'émuler un clavier USB. Ainsi, les valeurs du potentiomètre de 0 à 1023 renverront par secteur à une lettre, l'ordi recevra l'instruction comme ça et je n'ai plus à utiliser qu'un logiciel tout fait comme SoundPlant sur lequel chaque touche clavier déclenche un son :
et voici le code que nous avons développé, attention une partie vous allez vite le voir correspond à la gestion d'un servomoteur connecté à un autre bouton de la radio.
- include <Servo.h>
Servo myServo1; Servo myServo2;// create a servo object
int const potPin2 = A2; // analog pin used to connect the potentiometer int const potPin3 = A3; int potVal2; int potVal3;// variable to read the value from the analog pin int angle; // variable to hold the angle for the servo motor int ValeurBlocage; // variable utilisée pour controler si le potard bouge int ValeurPotard;// valeur du potard int ValeurLatence; // pour contrer le bruit sur le potard void setup() {
myServo1.attach(10); //myServo2.attach(12); // attaches the servo on pin 9 to the servo object Serial.begin(9600); // open a serial connection to your computer Keyboard.begin();
}
void loop() {
potVal2 = analogRead(potPin2); // read the value of the potentiometer // print out the value to the serial monitor //Serial.print("potVal2: "); //g //Serial.print(potVal2);
// scale the numbers from the pot angle = map(potVal2, 0, 1023, 20, 150);
// print out the angle for the servo motor //Serial.print(", angle: "); //Serial.println(angle);
// set the servo position myServo1.write(angle);
// wait for the servo to get there delay(100);
//myServo2.attach(12); // attaches the servo on pin 9 to the servo object //Serial.begin(9600); // open a serial connection to your computer
//potVal3 = analogRead(potPin3); // read the value of the potentiometer // print out the value to the serial monitor //Serial.print("potVal3: "); //Serial.print(potVal3);
// scale the numbers from the pot //angle = map(potVal3, 0, 1023, 20, 150);
// print out the angle for the servo motor //Serial.print(", angle: "); //Serial.println(angle);
// set the servo position //myServo2.write(angle);
// wait for the servo to get there //delay(100);
potVal3= analogRead(potPin3); /* if (potVal3>= (ValeurLatence+10) && potVal3<= ValeurLatence+10) { ValeurPotard=potVal3;
}
- /
ValeurPotard=potVal3;
Serial.print("valeurLatence"); Serial.print(ValeurLatence); Serial.println(); Serial.print(" valeurPotard"); Serial.print(potVal3); Serial.println(); Serial.print("valeurBlocage"); Serial.print(ValeurBlocage); Serial.println(); Serial.print(" valeur"); Serial.print(ValeurPotard); Serial.println(); delay(100);
while (ValeurBlocage!=ValeurPotard) // lz bloc s'effectue uniquement si la valeur de blocage est différente de la valeur du pot3
{ Serial.print("DansBoucle While"); delay(100); // chaque 1 seconde relance if (ValeurPotard>(ValeurLatence+10)|| ValeurPotard<ValeurLatence-10) // la double barre représente un ou logique { Serial.print("DansBoucle if");
if (potVal3>= 690 && potVal3<= 710)
Keyboard.println("1");
if (potVal3>= 670 && potVal3<=689) Keyboard.println("2"); if (potVal3> 650 && potVal3<= 669) Keyboard.println("3"); if (potVal3>= 630 && potVal3<=649) Keyboard.println("4"); if (potVal3>= 610 && potVal3<=629) Keyboard.println("5"); if (potVal3>= 590 && potVal3<=609) Keyboard.println("6"); if (potVal3>= 570 && potVal3<=589) Keyboard.println("7"); if (potVal3>= 550 && potVal3<=569) Keyboard.println("8"); if (potVal3>= 530 && potVal3<=549) Keyboard.println("9"); if (potVal3>= 510 && potVal3<=529) Keyboard.println("0"); if (potVal3>= 490 && potVal3<= 509) Keyboard.println("1"); if (potVal3>= 470 && potVal3<=489) Keyboard.println("2"); if (potVal3> 450 && potVal3<= 469) Keyboard.println("3"); if (potVal3>= 430 && potVal3<=449) Keyboard.println("4"); if (potVal3>= 410 && potVal3<=429) Keyboard.println("5"); if (potVal3>= 390 && potVal3<=409) Keyboard.println("6"); if (potVal3>= 370 && potVal3<=389) Keyboard.println("7"); if (potVal3>= 350 && potVal3<=369) Keyboard.println("8"); if (potVal3>= 330 && potVal3<=349) Keyboard.println("9"); if (potVal3>= 310 && potVal3<=329) Keyboard.println("0"); if (potVal3>= 290 && potVal3<= 309) Keyboard.println("q"); if (potVal3>= 270 && potVal3<=289) Keyboard.println("s"); if (potVal3> 250 && potVal3<= 269) Keyboard.println("d"); if (potVal3>= 230 && potVal3<=249) Keyboard.println("f"); if (potVal3>= 210 && potVal3<=229) Keyboard.println("g"); if (potVal3>= 190 && potVal3<=209) Keyboard.println("h"); if (potVal3>= 170 && potVal3<=189) Keyboard.println("j"); if (potVal3>= 150 && potVal3<=169) Keyboard.println("k"); if (potVal3>= 130 && potVal3<=149) Keyboard.println("l"); if (potVal3>= 110 && potVal3<=129) Keyboard.println("m"); if (potVal3>= 90 && potVal3<=109) Keyboard.println("n"); if (potVal3>= 70 && potVal3<=89) Keyboard.println("n"); if (potVal3>= 50 && potVal3<=69) Keyboard.println("b"); if (potVal3>= 30 && potVal3<=49) Keyboard.println("v"); if (potVal3>= 0 && potVal3<=29) Keyboard.println("c");
} ValeurBlocage=ValeurPotard;
ValeurLatence=ValeurPotard; }
}
Et voici la Radio sur laquelle une plaque spéciale Festival D a été installée :