// Programa : Scrool horizontal com matriz de leds 8x8
// Baseado no livro Arduino Basico, de Michael McRoberts
#include <pgmspace.h>
#include <TimerOne.h>
int DataPin = 4; //Ligar o pino 4 do Arduino ao DIN do modulo
int ClockPin = 5; //Ligar o pino 5 do Arduino ao CLK do módulo
int LoadPin = 6; //Ligar o pino 6 do Arduinio ao pino CS/Load do módulo
void loop() {
clearDisplay();
scroll(" Jacinto, Joao e Cristina ", 100); //Exibe a mensagem, com intervalo de scroll de 100
scroll(" 15 - 03 - 2014 ", 100); //Adicione mais linhas para mostrar outros caracteres
}
Projeto 9: Controlo de Servo Motor com Bluetooth e o Arduino.
Neste projeto vou mostrar como utilizar, o Bluetooth num telemóvel Android, para controlar um Servo Motor, com o Arduino.
O esquema:
Resistências: 220 ohms (à esquerda da imagem) e 330 ohms (a da direita da imagem).
O código:
//Programa : Controle de servo pelo Android utilizando Bluetooth
#include <Servo.h>
Servo myservo;
int val;
void setup()
{
//Pino de dados do servo ligado na porta 4
myservo.attach(4);
Serial.begin(9600);
}
void loop()
{
if(Serial.available()>=2)
{
int key=Serial.read();
int val=Serial.read();
myservo.write(val);
}
}
Após efetuar a montagem das componentes, tal como descrito no esquema, carregue o programa para o Arduino. No entanto, antes desconecte o VCC do módulo Bluetooth, para evitar qualquer conflito no momento da transmissão pelo computador.
Após o processo estar concluído volte a ligar o VCC.
Configurar o Android:
Com o Android vamos criar uma aplicação, com um botão deslizante (como se fosse um potenciómetro) para o controlo do servo motor.
1º - baixar e instalar, do Google Play, o aplicativo Microcontroller BT.
2º - Execute o Microcontroller BT. Clique no botão Menu do telemóvel e escolha a opção New Layout.
3º - Dê um nome ao novo Layout (por exemplo: Arduino Servo).
4º - Surgirá o nome do layout do lado esquerdo.
5º - Clique novamente no Menu do telemóvel e seguidamente em Edit Mode.
6º - O modo de edição é caracterizado pela cor vermelha. Clique no botão deslizante (ver a seta):
7º - Configure as propriedades do botão deslizante: "Analog Input e 5" e "Max = 180" (máx. graus de rotação).
8º - "Done" para finalizar o modo de edição.
9º - Clique uma vez mais no Menu do telemóvel e depois em Connect.
10º - Escolha o dispositivo correspondente ao módulo Bluetooth (no meu caso é HC06). A password por defeito é "1234".
11º - E agora é só pressionar o botão deslizante no Android e observar o servo motor!
O vídeo:
Espero que gostem!
terça-feira, 4 de março de 2014
Projeto 8: O teclado matricial (membrana 4x4) com o Arduino.
Neste projeto vou mostrar como utilizar, de forma muito simples, um teclado matricial 4x4, do tipo membrana adesiva, com o Arduino.
O esquema:
Ligações (pela ordem da imagem de cima) no Arduino (Mega):
2, 3, 4, 5 6, 7, 8, 9
O vídeo:
O código:
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8, 9}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
Projeto 7: O módulo de relays com o Arduino. Neste projeto vou mostrar como utilizar, de forma muito simples, um módulo de relés, para o controlo de uma lâmpada com o Arduino.
O esquema:
O vídeo:
O código:
// Basic 4 Realy board connection
// Each relay is turned on for 2 seconds and then off.
// You can here them click as there state changes from off to on and on to
// off.
// You will also see the corresponding Red LED on the 4 Relay board
// light up when the relay is on.
// define names for the 4 Digital pins On the Arduino 7,8,9,10
// These data pins link to 4 Relay board pins IN1, IN2, IN3, IN4
void setup()
{
// Initialise the Arduino data pins for OUTPUT
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
}
void loop()
{
digitalWrite(RELAY1,LOW); // Turns ON Relays 1
delay(2000); // Wait 2 seconds
digitalWrite(RELAY1,HIGH); // Turns Relay Off
digitalWrite(RELAY2,LOW); // Turns ON Relays 2
delay(2000); // Wait 2 seconds
digitalWrite(RELAY2,HIGH); // Turns Relay Off
digitalWrite(RELAY3,LOW); // Turns ON Relays 3
delay(2000); // Wait 2 seconds
digitalWrite(RELAY3,HIGH); // Turns Relay Off
digitalWrite(RELAY4,LOW); // Turns ON Relays 4
delay(2000); // Wait 2 seconds
digitalWrite(RELAY4,HIGH); // Turns Relay Off
}
Espero que gostem!
segunda-feira, 3 de março de 2014
Projeto 6: O Arduino e o módulo de Relógio RTC. Neste projeto vou mostrar como utilizar, de forma muito simples, um módulo de relógio RTC DS1307, com o Arduino.
Módulo RTC DS1307
O esquema:
O vídeo:
O código:
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
void setup () {
Serial.begin(9600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(__DATE__, __TIME__));
}
}
Projeto 5: Controlo de um Servo Motor com o Arduino Neste projeto vou mostrar como utilizar, de forma muito simples, um Servo Motor, com o Arduino.
Para este projeto, além do Servo Motor, utilizei também um potenciómetro 100KA.
O esquema:
O vídeo:
O código:
// Projeto 5
#include <Servo.h>
Servo servo1; // Create a servo object
void setup()
{
servo1.attach(5); // Attaches the servo on Pin 5 to the servo object
}
void loop()
{
int angle = analogRead(0); // Read the pot value
angle=map(angle, 0, 1023, 0, 180); // Map the values from 0 to 180 degrees
servo1.write(angle); // Write the angle to the servo
delay(15); // Delay of 15ms to allow servo to reach position
}
Espero que gostem!
Projeto 4: Controlo do Buzzer com o Arduino Neste projeto vou mostrar como utilizar, de forma muito simples, o Buzzer (5V), com o Arduino. Para tal, vou recorrer a um tema muito conhecido do cinema, associado ao agente James Bond 007.
Buzzer 5V
O esquema:
O vídeo:
O código:
#include "pitches.h"
#define NO_SOUND 0 // make the rests in music
int pace = 1450; // change pace of music("speedy")
void setup() {
for (int Note = 0; Note <54; Note++) {//counter of Notes (54 limit the array)
int duration = pace/noteDurations[Note];//Adjust duration with the pace of music
tone(8, melody[Note],duration); //Play note
// to distinguish the notes, set a minimum time between them.
delay(duration*1.2);
}
}
Projeto 3: Sensor Ultrasonic HC-SR04 Neste projeto vou mostrar como utilizar, de forma muito simples, o Sensor Ultrasonic HC-SR04.
Sensor Ultrasonic HC-SR04
O esquema:
O vídeo:
O código:
#include "Ultrasonic.h"
#define echoPin 13 //Pino 13 recebe o pulso do echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
//iniciando a função e passando os pinos
Ultrasonic ultrasonic(12,13);
void setup()
{
Serial.begin(9600); //inicia a porta serial
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
}
void loop()
{
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
// função Ranging, faz a conversão do tempo de
//resposta do echo em centimetros, e armazena
//na variavel distancia
int distancia = (ultrasonic.Ranging(CM));
Serial.print("Distancia em Cm: ");
Serial.println(distancia);
delay(1000); //espera 1 segundo para fazer a leitura novamente
}