Arquivo da categoria ‘Projetos’

Comunicação serial entre dois Arduinos

Publicado: 14 de outubro de 2010 em Projetos, Projetos

Podemos precisar a qualquer momento nos comunicar com outros dispositivos, no caso outros Arduinos.

Comunicação serial por fio

Configurando os pinos RX/TX do Arduino por fio:

No Arduino emissor teremos um potenciometro, do qual é lido o valor e mandado via serial.

No receptor teremos um LED que irá mudar o seu brilho conforme o valor do potencimetro.

Faça agora as seguintes conexões:

TX_ARDUINO#1 – – – – RX_ARDUINO#2

RX_ARDUINO#2 – – – – TX_ARDUINO#1


NOTA: QUANDO FOR PASSAR O CÓDIGO PARA O ARDUINO, DESCONECTAR OS FIOS DE TX E RX DE AMBOS OS LADOS!

Código Emissor:

int analogValue5, val5;

void setup() {
// Habilita porta Serial
Serial.begin(19200);
}

void loop() {
// Le pino analogico 5
analogValue5 = analogRead(5);

// Mapeia os valores para 0 – 255
val5 = map(analogValue5, 0, 1023, 0, 255);

// envia o valor via serial em modo binário
Serial.println(val5, BYTE);

}

Código Receptor:

byte incomingByte;

void setup() {
// Habilita comunicação serial
Serial.begin(19200);

// declara pin 11 como output, este é o LED
pinMode (11, OUTPUT);
}

void loop() {

// Se há bytes livres vindo da porta serial
if (Serial.available()) {

// Seta o valor para a variavel ‘incomingByte’
incomingByte = Serial.read();

// Escreve o valor no pino 11
analogWrite(11, int(incomingByte));

}
}

Arduino seguindo a luz

Publicado: 14 de outubro de 2010 em Projetos, Projetos

Esta é uma forma simples de você fazer um servo motor seguir a luz, usando alguns simples componentes!

Arduino seguindo a luz com servo motores

O vídeo original é feito com um ArduinoMEGA, o qual tem mais I/O (entradas e saídas). Todavia pode ser construído com qualquer base Arduino.

Componentes:
1 x Servo motor (de parabólica serve também)
2 x Fotoresistores
2 x Resistor 470ohms

[LightTracker[5].jpg]

Faça as ligações como descrito no esquema do FRITIZING acima.

Lembre-se que a gambiarra aqui é colocar de alguma forma uma pequena protoboard em cima do servo! Ou fica a vontade para usar a imaginação! (veja vídeo topo pagina)

#include <Servo.h>

Servo myservo;

int pos = 0;  // Variavel para guardar posicao servo.
int inputPhotoLeft = 1; // Facil de ler, instante 1 ou 0.
int inputPhotoRight = 0;

int Left = 0; // Guarda valor fotoresistor.
int Right = 0; // Guarda valor fotoresistor.

void setup()
{
myservo.attach(9); // Conecta servo ao pino digital 9.
}

void loop()
{
// Le os valores dos fotoresistores e guarda nas variaveis 
Left = analogRead(inputPhotoLeft);
Right = analogRead(inputPhotoRight);

// Checa se a esquerda é maior que direita, se sim move p/ direita.
if (Left > (Right +20))
// +20 é uma zona morta, sem isso causa interferencia.
{
if (pos < 179)
pos++;
myservo.write(pos);
}

// Checa se a esquerda é menor que a direita, se sim move esquerda.
if (Right > (Left +20))
// +20 é uma zona morta, sem isso causa interferencia.
{
if (pos > 1)
pos -= 1;
myservo.write(pos);
}

// Adicionando delay ou não o servo corre mais devagar
delay(10);
}

Qualquer dúvida por favor comente, seu feedback é muito importante!

Créditos, http://stigern.net/blog/?cat=35

C# e Arduino, programa básico

Publicado: 6 de outubro de 2010 em Arduino, Projetos, Projetos, Visual C#

Download aplicação C#: http://ozhan.org/_dosyalar/icerik/C_Arduino_LedFading.zip
Código Arduino:

int Led = 13;
int PwmLed = 11;
int Csharp;
void setup() {
  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  pinMode(Led, OUTPUT);
}
void loop() {
  if (Serial.available() > 0) {
    Csharp = Serial.read();
    Serial.println(Csharp, DEC);
    analogWrite(PwmLed, Csharp);
  }
}

O que o programa faz?

image

O Arduino toma a decisão de acender ou não um LED a partir do protocolo vindo pela serial. O mesmo pode ter controle de brilho do LED alterando-se o PWM.

Aqui está um vídeo demonstração:

Controle de um LED no Arduino feito em C#, PC

Disponivel em: http://www.ozhan.org/index.php?kat_id=19#Arduino
Qualquer dúvida me mandem um e-mail.

Att, denadai.