1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);//Sans l'adresse (Ox40) ça ne fonctionne pas!
char buf[13]; // taille du buffer de lecture (max 13 caractères).
byte n;
String strA, strB, strC;
int A, B, C;
char *pch;
void setup() {
Serial.begin(9600);
pwm.begin();
pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates
yield();
}
void loop() {
if (Serial.available() > 0) // nouvelles données sur le port série ?
{
// Lecture de la donnée reçue (max 13 caractères)
n = Serial.readBytesUntil('\n', buf, 13);
//n = Serial.readBytesUntil('#', buf, 13);
if (n > 0) // pas d'erreur ?
{
pch = strtok(buf, ","); // découper la chaîne reçue
strA = pch;
pch = strtok(NULL, ",");
strB = pch;
pch = strtok(NULL, ",");
strC = pch;
A = strA.toInt(); // conversion ver
B = strB.toInt();
C = strC.toInt();
// Debug (activer le moniteur Arduino)
Serial.println("Code=");
Serial.println(buf);
Serial.println(A);
Serial.println(B);
Serial.println(C);
// exécuter la fonction avec les paramètres voulus
pwm.setPWM(A,B,C);
memset(buf, 0, sizeof(buf));
Serial.flush();
}
}
} |
Partager