bonjour a tous
je débute sur arduino ,j'ai acheté plusieurs cartes :une uno et une mega.j'ai pu commencer a
appréhender le codage
j ai acheté une voiture wifi avec une camera ,histoire de continuer a apprendre ...
mais lol le code fourni par mon vendeur (chinois ^^) serait erroné .
si quelqu'un a une idée je suis preneur ^^
il me renvoi une erreur sur un def booleen ,voici le détail de l'erreur
Arduino : 1.6.7 (Windows 7), Carte : "Arduino/Genuino Uno"
In file included from C:\Users\portable\Documents\WIFIROBOT\WIFIROBOT.ino:1:0:
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/ServoTimer2.h:41:17: error: conflicting declaration 'typedef uint8_t boolean'
typedef uint8_t boolean;
^
In file included from sketch\WIFIROBOT.ino.cpp:1:0:
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:117:14: error: 'boolean' has a previous declaration as 'typedef bool boolean'
typedef bool boolean;
^
exit status 1
Erreur lors de la compilation.
Ce rapport contiendrait plus d'informations si l'option
"Montrer les informations de sortie pendant la compilation"
était activée dans Fichier > Préférences.
voici le code en question:
#include<ServoTimer2.h> //舵机驱动库文件
ServoTimer2 servoLev; //水平�置舵机控制
ServoTimer2 servoVcl; //竖直�置舵机控制
//电机驱动数å—引脚
int AIN1 = 6; //AIN1
int AIN2 = 5; //AIN2
int BIN1 = 10; //BIN1
int BIN2 = 9; //BIN2
int cmdData[4]; //定义一个数组用æ�¥å˜å‚¨ä¸²å�£æŽ¥æ”¶åˆ°çš„æ•°æ�®ï¼Œé•¿åº¦ä¸º5
int tmpData; //å˜æ”¾æ•°æ�®çš„临时å�˜é‡�
int UARTDataCount = 0;
int n = 0;
#define MIDPULSE 1500 //500表示舵机0度�置,1500表示90度�置,2500表示180度�置
/****************************************************************
舵机åˆ�使化函数,定义舵机连接引脚,上电归ä½�ç‰!
舵机1(水平é�¢ï¼‰ï¼šFF 01 01 舵机角度 FF æ•°å—引脚:3
舵机2(竖直é�¢ï¼‰ï¼šFF 01 04 舵机角度 FF æ•°å—引脚:11
****************************************************************/
void initServo()
{
servoVcl.attach(11); // æ•°å—引脚:11
servoLev.attach(3); // æ•°å—引脚:3
servoLev.write(MIDPULSE);
servoVcl.write(MIDPULSE);
delay(200);
}
void setup() {
pinMode(13,OUTPUT); //PIN模�
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN2,OUTPUT);
Serial.begin(9600); //串��使化
initServo(); //舵机�使化
}
/********************************************************
��指令:FF 00 01 00 FF
��指令:FF 00 02 00 FF
�左指令:FF 00 05 00 FF
��指令:FF 00 04 00 FF
å�œæ¢æŒ‡ä»¤ï¼šFF 00 00 00 FF
*********************************************************/
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available())
{
tmpData=Serial.read(); //读��自串�的数�
if(tmpData == 0xFF && UARTDataCount <2) //检测包头是�为0XFF
{
cmdData[0] = tmpData;
UARTDataCount++;
n = 1;
}
else
{
cmdData[n]=tmpData;
n++;
}
if(UARTDataCount == 2)
{
cmdData[0] = 0xFF;
cmdData[4] = 0xFF;
n = 1;
UARTDataCount = 0;
Serial.flush(); //清缓冲区
}
}
if(cmdData[0]==0xFF && cmdData[4]==0xFF) //收到完整的数�包
{
switch(cmdData[1]) //判æ–æ•°æ�®ç±»åž‹
{
case 0x00: //指令数�控制
switch(cmdData[2])
{
case 0x01:
setMotor(100,100);
break;
case 0x00:
setMotor(0,0);
break;
case 0x02:
setMotor(-100,-100);
break;
case 0x03:
setMotor(-100,100);
break;
case 0x04:
setMotor(100,-100);
break;
}
break;
case 0x01: //舵机数�控制
switch(cmdData[2])
{
case 0x01:
servoLev.write(cmdData[3]*13+500);
break;
case 0x04:
servoVcl.write(cmdData[3]*13+500);
break;
}
break;
}
}
}
void setMotor(int MOTORA,int MOTORB) //电机驱动函数
{
if(MOTORA>=0)
{
digitalWrite(AIN2,HIGH);
analogWrite(AIN1,255-MOTORA);
}
else
{
digitalWrite(AIN1,HIGH);
analogWrite(AIN2,MOTORA+255);
}
if(MOTORB>=0)
{
digitalWrite(BIN2,HIGH);
analogWrite(BIN1,255-MOTORB);
}
else
{
digitalWrite(BIN1,HIGH);
analogWrite(BIN2,255+MOTORB);
}
}