Je suis toujours sur mon casque iron man et je viens vous voir car là j’en peux plus.
le servo ne fonctionne pas . si je désactive la ligne audio.play ..... le servo fonctionne.
SVP j’en peux plus de se truc j’aimerais vraiment le finir.
merci d’avance .
type or p#include <Servo.h>
Servo servo1;
#include <CapacitiveSensor.h>
CapacitiveSensor Sensor = CapacitiveSensor(4, 2);
#include <SPI.h>
#include <SD.h> // Inclure la librairie SD
#define SDPIN 10 // Chip Select du lecteur SD
#include <TMRpcm.h>
File myFile;
TMRpcm audio;
long val;
int pos;
int led = 5;
int servoPin = 7;
int servostatus = 30;
int ledlevel=0;
void setup(){
audio.speakerPin = 9; // Speaker sur la pin 9
audio.setVolume(3); // gestion du volume de 0 à 7
audio.quality(1); // qualitée audio 0 ou 1
// Initialisation de la carte SD
if (!SD.begin(SDPIN)) {
Serial.println("initialization failed!");
return;
}
servo1.attach(servoPin);
pinMode(led, OUTPUT);
}
void loop(){
val = Sensor.capacitiveSensor(60);
if (val >= 50 && pos == 0)
{
audio.play("14.wav"); // Joue le son "son8bit.wav"
servo1.write(0);
delay (10);
analogWrite(led, 50);
delay(30);
digitalWrite(led, LOW);
delay(50);
analogWrite(led, 30);
delay(30);
digitalWrite(led, LOW);
delay(50);
analogWrite(led, 50);
delay(30);
digitalWrite(led, LOW);
delay(30);
analogWrite(led, 30);
delay(30);
digitalWrite(led, LOW);
delay(50);
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 15)
{
analogWrite(led, fadeValue);
pos = 1;
delay(100);
}
}
else if (val >= 60 && pos == 1)
{ servo1.write(180);
digitalWrite(led, LOW);
pos = 0;
delay(100);
}
while(audio.isPlaying()){}//wait until file is played
delay(1000);audio.stopPlayback(); // or wait 1sec and stop music
digitalWrite(9, LOW);
}aste code here
Dans ce cas, il faut chercher une autre bibliothèque pour les servos : peut-être celle-ci
Arduino's Servo library causes your servos to jitter. Alorium Technology's XLR8Servo Library doesn't jitter.
With Arduino's Servo library you lose the analogWrite() (PWM) functionality on pins 9 and 10.
With Alorium Technology's XLR8Servo Library you can still use analogWrite() (PWM) functionality on pins 9 and 10.
Arduino's Servo library uses the microcontroller's only 16bit timer.
Alorium Technology's XLR8Servo Library leaves the 16bit timer available for other uses.
Mais je ne sais pas si elle fonctionne avec un Uno. A tester...
si rien ne marche, il faudra contrôler le servo sans bibliothèque, en créant toi-même les signaux PPM. Un tuto sur le site d'Eskimon (tu peux lire à partir de là mais le reste est intéressant aussi)
OK j’utilise maintenant la bibliothèque servoTimer2.h et la miracle.
Merci a tous vous m'avez aiguillez dans la bonne direction.
Je laisse le code pour ceux que c’a intéresse.
//#include <Servo.h>
//Servo servo1;
#include"ServoTimer2.h"
ServoTimer2 servo1;
#include <CapacitiveSensor.h>
CapacitiveSensor Sensor = CapacitiveSensor(4, 2);
#include <SPI.h>
#include <SD.h> // Inclure la librairie SD
#define SDPIN 10 // Chip Select du lecteur SD
#include <TMRpcm.h>
File myFile;
TMRpcm audio;
long val;
int pos;
int led = 5;
int servoPin = 6;
int servostatus = 30;
int ledlevel=0;
void setup(){
audio.speakerPin = 9; // Speaker sur la pin 9
audio.setVolume(3); // gestion du volume de 0 à 7
audio.quality(1); // qualitée audio 0 ou 1
// Initialisation de la carte SD
if (!SD.begin(SDPIN)) {
Serial.println("initialization failed!");
return;
}
servo1.attach(servoPin);
pinMode(led, OUTPUT);
}
void loop(){
val = Sensor.capacitiveSensor(60);
if (val >= 50 && pos == 0)
{
audio.play("14.wav"); // Joue le son "son8bit.wav"
servo1.write(2250);
delay (10);
analogWrite(led, 50);
delay(30);
digitalWrite(led, LOW);
delay(50);
analogWrite(led, 30);
delay(30);
digitalWrite(led, LOW);
delay(50);
analogWrite(led, 50);
delay(30);
digitalWrite(led, LOW);
delay(30);
analogWrite(led, 30);
delay(30);
digitalWrite(led, LOW);
delay(50);
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 15)
{
analogWrite(led, fadeValue);
pos = 1;
delay(100);
}
}
else if (val >= 60 && pos == 1)
{ servo1.write(1500);
digitalWrite(led, LOW);
pos = 0;
delay(100);
}
while(audio.isPlaying()){}//wait until file is played
delay(1000);audio.stopPlayback(); // or wait 1sec and stop music
digitalWrite(9, LOW);
}
En fait non ça ne va pas, lorsque je débranche le câble usb et que je passe sur batterie ce qui sera la configuration final. je pert l'audio et le servo fait des aller retour. Si quelqu'un a une idée je suis preneur, d'avance merci.
Les nano officielles utilisent un régulateur de tension LM1117 qui est une version faible chute de tension donc cela devrait fonctionner avec tes batteries. Pour autant qu'il n'y ait pas un important appel de courant qui mette à genoux la batterie ou le régulateur.
Si c'est un clone nano il faudrait s'assurer de la référence du régulateur.
Je suis quand même surpris par le branchement du servo dans ton plan d'interconnexion. Sur les prises servo le rouge est le + normalement.
oups !!! bien vue je me suis tromper sur le plan mais le réel est bon. Sinon j’ai refais tous les branchements et ça fonctionne bien un fil de couper dans la gaine.
Maintenant une autre question, peut on empêcher le servo de bouger a la mise sous tension. il se déplace de quelques degrés et vient se positionner en attente.
D’avance merci.
merci pour ta réponse, ça ne fonctionne pas, des que j’alimente le circuit, le servo se déplace sans tenir compte de sa dernière position qui devrait être casque fermé.