Mostrando postagens com marcador tarefa. Mostrar todas as postagens
Mostrando postagens com marcador tarefa. Mostrar todas as postagens

segunda-feira, 4 de julho de 2011

Resultado da segunda tarefa.

Bom, mais uma vez o Flávio Alvarenga fez o melhor trabalho. Quem será capaz de fazer um projeto melhor que ele hein? Abaixo segue o diagrama do Fritzing que ele fez e os dois códigos (Arduino + Processing):
Código Arduino


int V[3] = {6,5,3}; // 6, 5 e 3 escolhidas por serem saídas PWM, capazes de emular um sina analógico.
int PotRed = 0; // potenciometro que controla a cor vermelha
int PotGre = 1; // potenciometro que controla a cor verde
int PotBlu = 2; // potenciometro que controla a cor azul
int redVal = 0; //acumula o valor da luz vermelha
int greVal = 0; // acumula o valor da luz verde
int bluVal = 0; //acumula o valor da luz azul
void setup() {
for (int i=0; i<3; i++){ //declara os pinos 9, 6 e 3 como saída
pinMode(V[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
redVal = (analogRead(PotRed)/4); // como o valor do potenciometro varia de 0 a 1023 dividindo o valor por 4 obtem-se valores entre 0 e 255* (Pois a variavel e um inteiro).
greVal = (analogRead(PotGre)/4); // Faz a leitura dos potenciometros e iguala ao acumulador da sua respectiva cor.
bluVal = (analogRead(PotBlu)/4);
redVal = map(redVal, 0, 1023, 0,255); //Ajusta o valor lido para ficar no intervalo [0,255]
gredVal = map(greVal, 0, 1023, 0,255);
bluVal = map(bluVal, 0, 1023, 0,255);
RGB(redVal,greVal,bluVal); // chama a função RGB
Serial.print("R");
Serial.println(analogRead(PotRed)/4); //importa para a porta Serial o valor lido na saida analogica 0 e atribui para a cor vermelha
Serial.print("G");
Serial.println(analogRead(PotGre)/4); //importa para a porta Serial o valor lido na saida analogica 1 e atribui para a cor verde
Serial.print("B");
Serial.println(analogRead(PotBlu)/4); //importa para a porta Serial o valor lido na saida analogica 2 e atribui para a cor azul
delay(100);
}
void RGB(int redVal,int greenVal, int blueVal){ // Transmite o valor lido pelo potenciometro para a porta PWM responsavel pelas cores red, green, blue.
analogWrite(V[0], redVal); // Escreve o valor do PWM do led vermelho
analogWrite(V[1], greenVal); // Escreve o valor do PWM do led verde
analogWrite(V[2], blueVal); // Escreve o valor do PWM do led azul
}


No código arduino ele definiu uma função chamada RGB() que define a cor do LED. Poderia ter feito uma função para mandar os dados para a porta serial.

Código Processing:



import processing.serial.*;
String buff = "";
int rval = 0, gval = 0, bval = 0;
int NEWLINE = 10;
Serial port;
void setup()
{
size(800, 800);
// Imprima uma lista no caso de a COM1 não funcionar
println("Portas seriais disponíveis:");
println(Serial.list());
//port = new Serial(this, "COM1", 9600);
// Use a primeira porta disponível
port = new Serial(this, Serial.list()[0], 9600);
}

void draw()
{
while (port.available() > 0) {
serialEvent(port.read());
}
background(rval, gval, bval);
}

void serialEvent(int serial)
{
// Se a variável "serial" não for igual ao valor de um caracter
// nova linha, inclua o valor à variável "buff". Se for igual,
// guarde o valor do buffer na variável "val".
if(serial != NEWLINE) {
buff += char(serial);
} else {
// O primeiro caractere diz-nos a qual cor se refere
char c = buff.charAt(0);
// Remova-o da string
buff = buff.substring(1);
// Descarte o retorno de carro ao final do buffer
buff = buff.substring(0, buff.length()-1);
// Converta a string para inteiro
if (c == 'R')
rval = Integer.parseInt(buff);
else if (c == 'G')
gval = Integer.parseInt(buff);
else if (c == 'B')
bval = Integer.parseInt(buff);
// Esvazie "buff"
buff = "";
}
}

domingo, 26 de junho de 2011

Terceira Tarefa

A tarefa dessa semana é bem simples. Ligar um motor servo ao arduino e utilizar o computador para controlar a posição do motor.
Funções utilizadas:
  • analogRead();
  • incluir a biblioteca Servo.h;
  • map();
  • Servo.write();
A explicação de como ligar um potenciômetro ao motor servo está aqui. Na tarefa anterior tem a explicação de como interagir o arduino com o computador.

Nível 2
Conectar dois motores servos no carrinho e fazer ele descrever um quadrado e depois um oito.

terça-feira, 21 de junho de 2011

Resultado da primeira tarefa.



Aí está o resultado comentado da primeira tarefa. O projeto é do Flávio Alvarenga. Veja que ele ligou os 3 LEDs ao mesmo resistor.

Abaixo está o código fonte do arduino, feito pelo Leandro Bitencourt.













//Atribuindo o valor 0 ao potenciômetro, posteriormente será a porta de leitura analógica utilizada para o potenciômetro.

int pot=0;

//Iniciando a variável utilizada para controlar o tempo do delay dos leds com o potenciômetro

int val=0;

//Declarando as portas 2, 4, e 6 como "green", "yellow" e "red"

int green=4;
int yellow=5;
int red=6;

void setup(){
//O comando pinMode configura as portas digitais como entrada ou saída. Neste caso, configura-se as portas green, yellow e red como saída.

pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(red, OUTPUT);
}

void loop(){
//O comando analogRead lê os dados de entrada de uma porta analógica. Aqui será lida a porta pot (0), e o valor lido será atribuído à variável val.

val=analogRead(pot);
//O comando digitalWrite atribui um valor binário a uma porta digital de saída, sendo HIGH = 1 e LOW = 0. Nesse caso HIGH envia uma corrente de 5V, que acende o led conectado à porta.
digitalWrite(green, HIGH);

//O comando delay atrasa a execução do próximo comando, em milissegundos.
delay(60*val);

digitalWrite(green, LOW);
digitalWrite(yellow, HIGH);
delay(2000);
digitalWrite(yellow, LOW);
digitalWrite(red, HIGH);
delay(60*val);
digitalWrite(red, LOW);
}

quinta-feira, 16 de junho de 2011

Segunda Tarefa

Agora vamos aprender a nos comunicar com o computador e usar os valores lidos pelo arduino para controlar a cor de um LED RGB e a cor de fundo de uma janela no computador.
Nesse projeto haverão 3 potenciômetro, um para cor vermelha (R), verde (G) e azul (B). A posição de cada potenciômetro irá determinar a intensidade de cada cor e a soma de cada uma será a cor final que será mostrada no LED e no monitor.

Funções utilizadas:
  • Serial.begin();
  • Serial.println();
  • Serial.print();
  • analogRead();
  • map();
  • ** Um código PROCESSING **
Passo-a-Passo:
  1. Controlar as cores do LED RGB (exemplo aqui);
  2. Ligar os 3 potenciômetros (veja a tarefa anterior);
  3. Usar a comunicação serial para integrar o valor dos potenciômetros com o programa processing (exemplo aqui).

Segunda Tarefa (Nível 2):

Agora as tarefas serão acompanhadas de dois ou mais níveis. O primeiro é para todos fazerem, o segundo é só para quem é bom (Isso é uma provocação, vão deixar barato?)!

Fazer o controle inverso, fazer um programa em processing que você controla a cor do LED através do computador. Um exemplo inicial está aqui.


Não esqueça de documentar (diagrama Fritzing e código) o seu trabalho.

Primeira Tarefa

A primeira tarefa é criar um semáforo em que o tempo de alternância entre o vermelho e o verde é definido por um potenciômetro. A luz amarela fica acesa por 2 segundos.

Para realizar esta tarefa será necessário usar algumas funções básicas do arduino:
  • pinMode();
  • digitalWrite();
  • analogRead();
  • delay();
Vamos dividir a tarefa em três partes:
  1. Fazer um LED acender e apagar (exemplo aqui), repetir isso para as 3 cores do semáforo;
  2. Usar um potenciômetro para controlar o tempo do LED aceso (exemplo aqui);
  3. Juntar o que foi aprendido nos itens 1 e 2 para fazer o semáforo.
Use o programa Fritzing para fazer o diagrama da montagem do circuito. Para fixar o aprendizado, escreva um parágrafo explicando cada uma das 4 funções utilizadas. A melhor solução será colocada no site com créditos para o autor.

Para quem estiver muito, muito perdido, aqui está o site (em português) do arduino com várias informações importantes: AQUI!