start:arduino:mains
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| start:arduino:mains [2022/10/30 18:37] – [Programme HackBerry.ino version V1.0 MK2] gerardadmin | start:arduino:mains [2023/04/13 07:23] (Version actuelle) – [Programme HackBerry_Test_tinkercad.ino version V1.0] gerardadmin | ||
|---|---|---|---|
| Ligne 18: | Ligne 18: | ||
| [[https:// | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | ==== Capteurs EMG ==== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | [[start: | ||
| Ligne 469: | Ligne 487: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ==== Simulation main sur Tinkercad ==== | ||
| + | |||
| + | === Cablage Arduino Uno et servoMoteurs === | ||
| + | [[https:// | ||
| + | |||
| + | === Schema === | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | === Programme HackBerry_Test_tinkercad.ino version V1.0 === | ||
| + | <code c Main_robot_0011.ino> | ||
| + | #include < | ||
| + | |||
| + | //Pin | ||
| + | int pinButtonCalib; | ||
| + | int pinButtonTBD; | ||
| + | int pinButtonThumb; | ||
| + | int pinButtonOther; | ||
| + | int pinServoIndex; | ||
| + | int pinServoOther; | ||
| + | int pinServoThumb; | ||
| + | int pinSensor; //sensor input | ||
| + | |||
| + | //Software | ||
| + | int sensorValue = 0; | ||
| + | int memPouce = 0; | ||
| + | int memIndex = 0; | ||
| + | int mem3Dgts = 0; | ||
| + | |||
| + | //Hardware | ||
| + | Servo servoIndex; // | ||
| + | Servo servoOther; //3doigts | ||
| + | Servo servoThumb; //pouce | ||
| + | |||
| + | //Valeurs mini/max servos | ||
| + | const int outThumbMax = 170;// | ||
| + | const int outIndexMax = 142;// | ||
| + | const int outOtherMax = 96;//valeur max servo 3doigts | ||
| + | |||
| + | const int outThumbMin = 170-86;// | ||
| + | const int outIndexMin = 140-117; //valeur min servo index 140-117= 23 | ||
| + | const int outOtherMin = 95-55;// | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | |||
| + | // Pin Configuration | ||
| + | pinButtonCalib = A4;// A6 sur Hackberry pour test Calibration -- validation index | ||
| + | pinButtonTBD | ||
| + | pinButtonThumb = A0;// Verrouillage pouce -- validation pouce | ||
| + | pinButtonOther = 10;// Verouillage 3 doigts -- validation | ||
| + | pinServoIndex | ||
| + | pinServoOther | ||
| + | pinServoThumb | ||
| + | pinSensor | ||
| + | | ||
| + | servoIndex.attach(pinServoIndex);// | ||
| + | servoOther.attach(pinServoOther);// | ||
| + | servoThumb.attach(pinServoThumb);// | ||
| + | pinMode(pinButtonCalib, | ||
| + | pinMode(pinButtonTBD, | ||
| + | pinMode(pinButtonThumb, | ||
| + | pinMode(pinButtonOther, | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | sensorValue = 0; | ||
| + | | ||
| + | if ( digitalRead(pinButtonThumb) == HIGH ){ | ||
| + | memPouce = 1; | ||
| + | memIndex = 0; | ||
| + | mem3Dgts = 0; | ||
| + | } | ||
| + | if ( digitalRead(pinButtonCalib) == HIGH ){ | ||
| + | memPouce = 0; | ||
| + | mem3Dgts = 0; | ||
| + | memIndex = 1; | ||
| + | } | ||
| + | if ( digitalRead(pinButtonOther) == HIGH ){ | ||
| + | memPouce = 0; | ||
| + | mem3Dgts = 1; | ||
| + | memIndex = 0; | ||
| + | } | ||
| + | |||
| + | | ||
| + | if (memPouce == 1){ | ||
| + | sensorValue = analogRead(pinSensor); | ||
| + | delay(25); | ||
| + | sensorValue = map(sensorValue, | ||
| + | Serial.print(" | ||
| + | servoThumb.write(sensorValue); | ||
| + | delay(15); | ||
| + | } | ||
| + | if (memIndex == 1){ | ||
| + | sensorValue = analogRead(pinSensor); | ||
| + | delay(25); | ||
| + | sensorValue = map(sensorValue, | ||
| + | Serial.print(" | ||
| + | servoIndex.write(sensorValue); | ||
| + | delay(15); | ||
| + | } | ||
| + | if (mem3Dgts == 1){ | ||
| + | sensorValue = analogRead(pinSensor); | ||
| + | delay(25); | ||
| + | sensorValue = map(sensorValue, | ||
| + | Serial.print(" | ||
| + | servoOther.write(sensorValue); | ||
| + | delay(15); | ||
| + | } | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Test main.ino==== | ||
| + | <code c testmain.ino> | ||
| + | //EMG sensor robotic hand controller | ||
| + | //This code is for controlling a robotic hand with | ||
| + | //an EMG sensor. | ||
| + | // | ||
| + | //© Au Robots 8.4.2017 | ||
| + | |||
| + | |||
| + | //Necessary for controlling the servos | ||
| + | #include < | ||
| + | |||
| + | const int x = ///// This is the reference value and it | ||
| + | //will depend on your setup. You have to find it out | ||
| + | //yourself by looking at the serial monitor and finding | ||
| + | //a value between the maximum and minimum value. | ||
| + | |||
| + | //Naming the servos | ||
| + | Servo servo1; | ||
| + | Servo servo2; | ||
| + | Servo servo3; | ||
| + | Servo servo4; | ||
| + | Servo servo5; | ||
| + | Servo servo6; | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | //Starting the serial monitor | ||
| + | Serial.begin(9600); | ||
| + | |||
| + | // | ||
| + | servo2.attach(10); | ||
| + | servo3.attach(11); | ||
| + | servo4.attach(3); | ||
| + | servo5.attach(6); | ||
| + | servo6.attach(5); | ||
| + | } | ||
| + | |||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | //Printing the EMG data | ||
| + | Serial.println(analogRead(5)); | ||
| + | |||
| + | //If the EMG data is greater than x the hand closes | ||
| + | if(analogRead(5) > x) { | ||
| + | servo2.write(180); | ||
| + | servo3.write(148); | ||
| + | servo4.write(89); | ||
| + | servo5.write(180); | ||
| + | servo6.write(180); | ||
| + | } | ||
| + | |||
| + | //If the EMG data is lower than x the hand opens | ||
| + | else if (analogRead(5) < x) { | ||
| + | servo2.write(38); | ||
| + | servo3.write(10); | ||
| + | servo4.write(0); | ||
| + | servo5.write(16); | ||
| + | servo6.write(16); | ||
| + | } | ||
| + | |||
| + | //A delay to slow down the process | ||
| + | delay(100); | ||
| + | } | ||
| + | </ | ||
| + | |||
/home/chanteri/www/fablab37110/data/attic/start/arduino/mains.1667151473.txt.gz · Dernière modification : (modification externe)
