Comunicação entre PC e Arduino

Numa sociedade, todo o indivíduo necessita de comunicar com os restantes. Para tal, desenvolveu e adquiriu, ao longo na sua vida, formas e protocolos de comunicação. Na electrónica e na informática não é menos verdade essa realidade. Cada vez mais a sociedade exige que haja comunicação entre homem/máquina e máquina/máquina.
O que se pretende demonstrar com um pequeno exemplo são, as várias fases que teremos que ter em conta quando temos que comunicar com um Micro-controlador e o nosso PC. Neste caso o Micro-controlador escolhido foi o Arduino, 

   Este exemplo mostra como ler os pinos das entradas analógicas, mostrar esses valores através da serial do arduino.
Material necessário

1 Placa arduino
6 Potenciômetro


Conecte um pino do canto do potenciômetro no pino 5volts do arduino, o pino do meio do potenciômetro conecte no pinos analog A0,A1,A2,A3,A4,A5,A6, e o terceiro pino do potenciômetro conectado

no GND do arduino.E faça o mesmo com os outros potenciômetro.


Veja abaixo o desenho da ligação:

                                    Circuito:



Funcionamento

Conforme o desenho percebe-se que os pinos A0,A1,A2,A3,A4,A5,A6 do arduino é ligado no pino do meio do potenciômetro, esses pinos A0,A1,A2,A3,A4,A5,A6 é determinado como pino de entrada, é nele que faremos uma leitura de uma tensão externa,essa tensão externa é a tensão que existe entre o pino do meio do potenciômetroe o GND, ou seja, conforme giramos o potenciômetro os pinos terá determinada tensão. 

Codigo:


const int analogInPin0 = A0;
const int analogInPin1 = A1;
const int analogInPin2 = A2;
const int analogInPin3 = A3;
const int analogInPin4 = A4;
const int analogInPin5 = A5;
const int analogInPin6 = A6;


int sensorValue0 = 0;
int sensorValue1 = 0;
int sensorValue2 = 0;
int sensorValue3 = 0;
int sensorValue4 = 0;
int sensorValue5 = 0;
int sensorValue6 = 0;

int outputValue0 = 0;
int outputValue1 = 0;
int outputValue2 = 0;
int outputValue3 = 0;
int outputValue4 = 0;
int outputValue5 = 0;
int outputValue6 = 0;
char envia;

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}


void loop() {


  if (Serial.available() > 0) {
    char Read = Serial.read();
    if (Read == 'A') //avisa que o software foi conectado com o microcontrolador, para enviar os dados 
    {
      envia = 'A';
    }
    if (Read == 'B') //Avisa que o software foi desconectado e bloqueia o envio de dados 
    {
      envia = 'B';
    }
    if (Read == 'c') //Liga o lede da porta 13
    {
      digitalWrite(2, HIGH);
    }
    if (Read == 'd') //Desliga o lede da porta 13
    {
      digitalWrite(2, LOW);
    }
    
     if (Read == 'e') //Liga o lede da porta 13
    {
      digitalWrite(3, HIGH);
    }
    if (Read == 'f') //Desliga o lede da porta 13
    {
      digitalWrite(3, LOW);
    }
     if (Read == 'g') //Liga o lede da porta 13
    {
      digitalWrite(4, HIGH);
    }
    if (Read == 'h') //Desliga o lede da porta 13
    {
      digitalWrite(4, LOW);
    }
     if (Read == 'i') //Liga o lede da porta 13
    {
      digitalWrite(5, HIGH);
    }
    if (Read == 'j') //Desliga o lede da porta 13
    {
      digitalWrite(5, LOW);
    }
     if (Read == 'k') //Liga o lede da porta 13
    {
      digitalWrite(6, HIGH);
    }
    if (Read == 'l') //Desliga o lede da porta 13
    {
      digitalWrite(6, LOW);
    }
     if (Read == 'm') //Liga o lede da porta 13
    {
      digitalWrite(7, HIGH);
    }
    if (Read == 'n') //Desliga o lede da porta 13
    {
      digitalWrite(7, LOW);
    }
     if (Read == 'o') //Liga o lede da porta 13
    {
      digitalWrite(8, HIGH);
    }
    if (Read == 'p') //Desliga o lede da porta 13
    {
      digitalWrite(8, LOW);
    }
     if (Read == 'q') //Liga o lede da porta 13
    {
      digitalWrite(9, HIGH);
    }
    if (Read == 'r') //Desliga o lede da porta 13
    {
      digitalWrite(9, LOW);
    }
     if (Read == 's') //Liga o lede da porta 13
    {
      digitalWrite(10, HIGH);
    }
    if (Read == 't') //Desliga o lede da porta 13
    {
      digitalWrite(10, LOW);
    }
     if (Read == 'u') //Liga o lede da porta 13
    {
      digitalWrite(11, HIGH);
    }
    if (Read == 'v') //Desliga o lede da porta 13
    {
      digitalWrite(11, LOW);
    }
     if (Read == 'w') //Liga o lede da porta 13
    {
      digitalWrite(12, HIGH);
    }
    if (Read == 'x') //Desliga o lede da porta 13
    {
      digitalWrite(12, LOW);
    }
     if (Read == 'y') //Liga o lede da porta 13
    {
      digitalWrite(13, HIGH);
    }
    if (Read == 'z') //Desliga o lede da porta 13
    {
      digitalWrite(13, LOW);
    }
  }

  sensorValue0 = analogRead(analogInPin0);
  outputValue0 = map(sensorValue0, 0, 1023, 0, 255);

  sensorValue1 = analogRead(analogInPin1);
  outputValue1 = map(sensorValue1, 0, 1023, 0, 255);

  sensorValue2 = analogRead(analogInPin2);
  outputValue2 = map(sensorValue2, 0, 1023, 0, 255);

  sensorValue3 = analogRead(analogInPin3);
  outputValue3 = map(sensorValue3, 0, 1023, 0, 255);

  sensorValue4 = analogRead(analogInPin4);
  outputValue4 = map(sensorValue4, 0, 1023, 0, 255);

  sensorValue5 = analogRead(analogInPin5);
  outputValue5 = map(sensorValue5, 0, 1023, 0, 255);

  sensorValue6 = analogRead(analogInPin6);
  outputValue6 = map(sensorValue6, 0, 1023, 0, 255);



  if (envia == 'A') {
    Serial.print(outputValue0);
    Serial.print("|");
    Serial.print(outputValue1);
    Serial.print("|");
    Serial.print(outputValue2);
    Serial.print("|");
    Serial.print(outputValue3);
    Serial.print("|");
    Serial.print(outputValue4);
    Serial.print("|");
    Serial.print(outputValue5);
    Serial.print("|");
    Serial.println(outputValue6);
  }
  //delay(100);
}