This shows you the differences between two versions of the page.
— | nomades:arduino [2019/12/18 17:29] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Workshop Arduino & Systéme interactif ====== | ||
+ | |||
+ | ===== 1- achat Arduino uno (jan2016) et plus ===== | ||
+ | |||
+ | |||
+ | -un systéme complet pour commencer - http:// | ||
+ | |||
+ | -la carte uno de base - http:// | ||
+ | |||
+ | -shield moteur - http:// | ||
+ | |||
+ | -lylipad (pour textile) - http:// | ||
+ | |||
+ | -proto-shield - http:// | ||
+ | |||
+ | -explication de base : http:// | ||
+ | |||
+ | |||
+ | |||
+ | ===== 2-premier pas dans l' | ||
+ | |||
+ | |||
+ | -branchement de la carte arduino uno en usb sur votre ordinateur | ||
+ | |||
+ | -téléchargement logiciel Arduino-Ide pour charger les firmware et programmer votre arduino : | ||
+ | https:// | ||
+ | |||
+ | **-test classique pour voir si tout marche bien : jouer avec une LED** | ||
+ | utilisé l' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | **-utiliser un exemple plus complexe - thérémin controllé avec photorésistance** | ||
+ | |||
+ | utiliser un breadboard | ||
+ | petit cable | ||
+ | croco | ||
+ | resistance 10Kohms | ||
+ | photoresistance | ||
+ | |||
+ | script dans example - StarterKit | ||
+ | |||
+ | connecter le circuit & uploader le script | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== 2-les capteurs ===== | ||
+ | |||
+ | |||
+ | **-le potentiométre** - connecté comme suit : https:// | ||
+ | |||
+ | **-la photorésistance :** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | la résistance est de 10kohm - (marron/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | -le capteur de température | ||
+ | |||
+ | **-le capteur de pression** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | la résistance est de 10kohm - (marron/ | ||
+ | |||
+ | |||
+ | |||
+ | -le switch | ||
+ | |||
+ | -le bouton pressoire, hardware : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - Le slider, hardware : | ||
+ | |||
+ | | ||
+ | |||
+ | **-Plusieurs capteurs ensemble :** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== 3-oscillateur interne + interaction ===== | ||
+ | |||
+ | On essaye de faire un oscillateur simple controllé par potentiométre | ||
+ | |||
+ | on entre et upload le code (plus bas) | ||
+ | |||
+ | puis on suit le schéma ci-joint | ||
+ | |||
+ | {{: | ||
+ | |||
+ | pour faire ce schéma j'ai utilisé : Fritzing - téléchargement ici : http:// | ||
+ | |||
+ | < | ||
+ | /* | ||
+ | Pitch follower | ||
+ | |||
+ | Plays a pitch that changes based on a changing analog input | ||
+ | |||
+ | | ||
+ | * 8-ohm speaker on digital pin 9 | ||
+ | * potentiometer (10Kohms) on analog 3,3V and analog IN 0 | ||
+ | |||
+ | | ||
+ | | ||
+ | by TheNoiser based on Tom Igoe, with suggestion from Michael Flynn | ||
+ | |||
+ | This example code is in the public domain. | ||
+ | |||
+ | | ||
+ | |||
+ | */ | ||
+ | |||
+ | |||
+ | void setup() { | ||
+ | // initialize serial communications (for debugging only): | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // read the sensor: | ||
+ | int sensorReading = analogRead(A0); | ||
+ | // print the sensor reading so you know its range | ||
+ | Serial.println(sensorReading); | ||
+ | // map the analog input range (in this case, 400 - 1000 from the photoresistor) | ||
+ | // to the output pitch range (120 - 1500Hz) | ||
+ | // change the minimum and maximum input numbers below | ||
+ | // depending on the range your sensor' | ||
+ | int thisPitch = map(sensorReading, | ||
+ | |||
+ | // play the pitch: | ||
+ | tone(9, thisPitch, 10); | ||
+ | delay(1); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | , | ||
+ | ===== 4-les moteurs ===== | ||
+ | |||
+ | |||
+ | - ServoMoteurs | ||
+ | | ||
+ | Arduino permet de controler directement des moteurs, les premiers sur lesquels nous allons nous pencher sont les servomoteurs, | ||
+ | |||
+ | Hardware : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Il suffit d' | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | / Sweep | ||
+ | // by BARRAGAN < | ||
+ | // This example code is in the public domain. | ||
+ | |||
+ | |||
+ | #include < | ||
+ | |||
+ | Servo myservo; | ||
+ | // a maximum of eight servo objects can be created | ||
+ | |||
+ | int pos = 0; // variable to store the servo position | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | myservo.attach(6); | ||
+ | } | ||
+ | |||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees | ||
+ | { // in steps of 1 degree | ||
+ | myservo.write(pos); | ||
+ | delay(15); | ||
+ | } | ||
+ | for(pos = 180; pos>=1; pos-=1) | ||
+ | { | ||
+ | myservo.write(pos); | ||
+ | delay(15); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Il est possible d' | ||
+ | |||
+ | Hardware : | ||
+ | |||
+ | Si l'on veut contrôler plus de moteurs à la fois, il suffit de remplacer l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Moteurs Courant continu (avec carte MotorShield Arduino) | ||
+ | |||
+ | Hardware | ||
+ | |||
+ | : | ||
+ | |||
+ | Code : voir en bas du lien http:// | ||
+ | |||
+ | |||
+ | ===== 5-arduino et PD ===== | ||
+ | |||
+ | ==== prise en main - étape de départ ==== | ||
+ | |||
+ | -uploader le firmata pour pouvoir utiliser les entrées et les sorties arduino dans PD | ||
+ | |||
+ | < | ||
+ | #include < | ||
+ | |||
+ | byte analogPin; | ||
+ | |||
+ | void analogWriteCallback(byte pin, int value) | ||
+ | { | ||
+ | pinMode(pin, | ||
+ | analogWrite(pin, | ||
+ | } | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Firmata.setFirmwareVersion(FIRMATA_MAJOR_VERSION, | ||
+ | Firmata.attach(ANALOG_MESSAGE, | ||
+ | Firmata.begin(); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | while (Firmata.available()) { | ||
+ | Firmata.processInput(); | ||
+ | } | ||
+ | for (analogPin = 0; analogPin < TOTAL_ANALOG_PINS; | ||
+ | Firmata.sendAnalog(analogPin, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | -puis télécharger et utiliser | ||
+ | |||
+ | -ouvrir objet PDUINO dans les exemples | ||
+ | |||
+ | -cliquez sur devices pour avoir le port de votre arduino (comport - visible sur le retour d'info PD fenêtre principale | ||
+ | |||
+ | -activez le port (example cliquez serial port correpondant sur le port de votre arduino) puis visualisation dans les display plus bas dans le patch | ||
+ | |||
+ | -pour la partie connections des capteurs : | ||
+ | |||
+ | === Entrées Entrées Analogiques === | ||
+ | |||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | === Entrées Numériques === | ||
+ | |||
+ | Les entrées numériques se configurent de la même façon, en utilisant [pinMode digital n< pour les ouvrir. | ||
+ | |||
+ | |||
+ | === les entrées sont instables - comment faire? === | ||
+ | |||
+ | Si les autres entrées " | ||
+ | |||
+ | Donc : | ||
+ | |||
+ | - soit tu ne te sers pas des autres entrées, dans ce cas, ou tu les passes en mode " | ||
+ | |||
+ | - soit tu te sers de ces sorties mais la source de tension que tu mesures n'a pas assez de " | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === Contrôle des moteurs avec Firmata === | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Prendre l' | ||
+ | |||
+ | __un exemple concret :__ | ||
+ | |||
+ | **Arduino + motorShieldV3 + moteurVitesseContinu** | ||
+ | |||
+ | |number| --> |/ 100|--> | ||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | Moteur pas à pas (stepper) | ||
+ | |||
+ | Si on ne veut pas une vitesse de rotation très rapide ni un couple trop important, on peut utiliser le stepper directement sur la carte Arduino : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Il suffit de déclarer les pins utilisées en sorties (pinModeX output) et d' | ||
+ | |||
+ | === des patchsPD - Modules === | ||
+ | |||
+ | **Module sampling (rec disk) control via capteurs** | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | **module player timeline** | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | |||
+ | Contrôle DMX via Arduino : | ||
+ | |||
+ | Il faut tout d' | ||
+ | |||
+ | Ensuite, suivre les étapes de ce tutoriel : | ||
+ | https:// | ||
+ | |||
+ | IMPORTANT : En uploadant Serial To DMX sur votre Arduino, vous aurez un message d' | ||
+ | |||
+ | |||
+ | |||
+ | ===== 6-Arduino - synth & visual machine ===== | ||
+ | |||
+ | to develop | ||
+ | |||
+ | |||
+ | http:// | ||
+ | |||
+ | https:// | ||
+ | |||
+ | http:// | ||
+ | |||
+ | ===== 7-Arduino - Theremine Purr Data simulation ===== | ||
+ | |||
+ | Nous allons contruire une maquette de Thérémine avec un arduino et deux capteurs de distance qui controleront respectivement les modulations de fréquence( donc le pitch) et le volume du process audio géré par Purr Data | ||
+ | |||
+ | Matériel : | ||
+ | |||
+ | 2 capteurs HC-SR04 | ||
+ | |||
+ | 1 arduino | ||
+ | |||
+ | 1 bread board | ||
+ | |||
+ | Cables de connexion électroniques | ||
+ | |||
+ | 1 cable USB (pour arduino vers PC) | ||
+ | |||
+ | 1 PC | ||
+ | |||
+ | Sofware | ||
+ | |||
+ | Purr Data a.k.a pd-l2ork | ||
+ | |||
+ | Arduino avec la librairie UltraDistSensor installée (trouvée via le gestinnaire de bibliothèque Arduino) | ||
+ | |||
+ | Schémas de connexions : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | Photos : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | Code Arduino pour 2 capteurs de distance : | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | # | ||
+ | UltraDistSensor mysensor1; | ||
+ | UltraDistSensor mysensor2; | ||
+ | // | ||
+ | int reading1; | ||
+ | int reading2; | ||
+ | int mysensor1distanceInCmMax=30; | ||
+ | int mysensor2distanceInCmMax=20; | ||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | mysensor1.attach(11, | ||
+ | mysensor2.attach(3, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | | ||
+ | if(reading1 > mysensor1distanceInCmMax){ | ||
+ | reading1 = mysensor1distanceInCmMax; | ||
+ | } | ||
+ | // Serial.print(" | ||
+ | // Serial.println(reading); | ||
+ | // Serial.println(" | ||
+ | | ||
+ | if(reading2 > mysensor2distanceInCmMax){ | ||
+ | reading2 = mysensor2distanceInCmMax; | ||
+ | } | ||
+ | // Serial.print(" | ||
+ | Serial.print(reading1); | ||
+ | Serial.print(" | ||
+ | Serial.println(reading2); | ||
+ | delay(60); | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Patches Pure Data : | ||
+ | |||
+ | |||
+ | Reception des capteurs dans Purr Data | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ===== tips & tricks ===== | ||
+ | |||
+ | les problémes qui peuvent apparaitre, les petits conseils utiles... | ||
+ | |||
+ | ==== port & permissions ==== | ||
+ | |||
+ | Si vous utilisez un systéme libre (Gnu/Linux) comme nous, la premiére fois que vous utilisez arduino pour uploader un script dans la carte, vous aurez sûrement ce probléme : | ||
+ | |||
+ | " | ||
+ | |||
+ | en fait votre utilisateur " | ||
+ | |||
+ | ouvrir un terminal et taper les commandes suivantes (mettre votre nom utilisateur à la place de < | ||
+ | |||
+ | $ sudo usermod -a -G dialout < | ||
+ | |||
+ | $ sudo chmod a+rw / | ||
+ | |||
+ | si tout se passe bien vous devriez pouvoir uploader vos scripts. | ||
+ | |||
+ | ==== calcul de résistances ==== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | ===== arts & arduino ===== | ||
+ | |||
+ | ==== installation, | ||
+ | |||
+ | |||
+ | -Zimoun et ses moteurs : http:// | ||
+ | |||
+ | -différents projets artistique utilisant arduino : http:// | ||
+ | |||
+ | -projet bourse et tricotage (via arduino) : http:// | ||
+ | |||
+ | -machine interactive avec couteau : https:// | ||
+ | |||
+ | -oeuvres collaborative (Marinos) : https:// | ||
+ | |||
+ | -Uki Enter The bionet - Shu Lea Cheang : https:// | ||
+ | |||
+ | -sonification wikipedia : http:// | ||
+ | |||
+ | -collectif Ukrainien (HP motorisé...etc) : http:// | ||
+ | |||
+ | -des mirroires, des moteurs, des capteurs (galerie style!) : http:// | ||
+ | |||
+ | -lithophone/ | ||
+ | |||
+ | -plus de projets audio/ | ||
+ | |||
+ | -install eeg & arduino moteur : https:// | ||
+ | |||
+ | -Ecoute urbaine & maps : http:// | ||
+ | |||
+ | === controllers & stuffs === | ||
+ | |||
+ | |||
+ | -drumMachine : https:// | ||
+ | |||
+ | -paper piano (tranducInk) - https:// | ||
+ | |||
+ | -pour Arturo : https:// | ||
+ | |||
+ | -cheesy matiére qui bouge! https:// | ||
+ | |||
+ | -controlleur 4 potars (arduino/ | ||
+ | |||
+ | -arduinome : https:// | ||
+ | |||
+ | -méga stuff raspberry+arduino : https:// | ||
+ | |||
+ | -sugarCube (genre monotome) : https:// | ||
+ | |||
+ | -mimi le bouquin interactif : http:// | ||
+ | |||