Here is the C++ code:
#include "stdafx.h"
#include <iostream>
#include "Serial.h"
int _tmain(int argc, _TCHAR* argv[])
{
LPCWSTR portName = L"COM4";
Serial *serialPort1;
serialPort1 = new Serial(portName);
int a = 0;
int b = 0;
int c, i, continuar;
char *buffer;
while(b < 10){
if (a == 0){
if ((0 <= b) && (b < 5)){
buffer = "05100";
}
else if ((5 <= b) && (b < 9)){
buffer = "05050";
}
else{//b==9
buffer = "05000";
}
a = 1;
}
else{
if ((0 <= b) && (b < 5)){
buffer = "06100";
}
else if ((5 <= b) && (b < 9)){
buffer = "06050";
}
else{//b==9
buffer = "06000";
}
a = 0;
}
if (serialPort1->WriteData(buffer, sizeof(buffer)) == false)
std::cout << "ERROR sending data\n";
if (serialPort1->WriteData(buffer, sizeof(buffer)) == false)
std::cout << "ERROR sending data\n";
Sleep(1000);
c = b%2;
if (c == 1){
buffer = "08100";
}
else{
buffer = "08000";
}
if (serialPort1->WriteData(buffer, sizeof(buffer)) == false)
std::cout << "ERROR sending data\n";
if (serialPort1->WriteData(buffer, sizeof(buffer)) == false)
std::cout << "ERROR sending data\n";
Sleep(1000);
b++;
}
}
And here is the Arduino code:
#include <Servo.h>
int terminal1, terminal2, tension1, tension2, tension3, pos1, pos2, pos3, max_ang;
float pos_f;
char c;
Servo g_servo8;
void setup(){
//crea el objeto serial
Serial.begin(9600);
max_ang = 180;
//leds
pinMode(5, OUTPUT);
//servos
pinMode(8, OUTPUT);
g_servo8.attach(8);
}
void loop(){
//el arduino espera a recibir algo
while (Serial.available() > 1){
//lee el terminal
terminal1 = Serial.read();
terminal1 = (terminal1 - 48)*10;
terminal2 = Serial.read();
terminal2 = terminal2 - 48 + terminal1;
delay(5); //espera para que le lleguen todos los datos antes de leerlos
if ( terminal2 == 5){
//LEDS
//lee la tension
tension1 = Serial.read();
tension1 = (tension1 - 48)*100;
tension2 = Serial.read();
tension2 = (tension2 - 48)*10 + tension1;
tension3 = Serial.read();
tension3 = 2*(tension3 - 48 + tension2);
analogWrite(terminal2, tension3);
}
else{
//servos
pos1 = Serial.read();
pos1 = (pos1 - 48)*100;
pos2 = Serial.read();
pos2 = (pos2 - 48)*10 + pos1;
pos3 = Serial.read();
pos3 = (pos3 - 48) + pos2;
pos_f = (float)pos3/100.0 * max_ang;
g_servo8.write(pos_f);
}
}//end while
}
Thanks for your help!