#include <LiquidCrystal.h>
const byte PIN_BUTTON_RIGHT = 8;
const byte PIN_BUTTON_UP = 9;
const byte PIN_BUTTON_DOWN = 10;
const byte PIN_BUTTON_LEFT = 11;
const byte PIN_BUTTON_TEMP = 12;
float tempc;
int temppin=0;
LiquidCrystal lcd(A4,A5,12,11,10,9);
int sirene,Buzzer=6,LED=7;
int RECV_PIN=2, motor1_1=3, motor1_2=4, motor2_1=5, motor2_2=6,ledfarol=7;
void setup() {
Serial.begin(9600);
Serial.println("Simple Adafruit Motor Shield sketch");
pinMode(PIN_BUTTON_RIGHT, INPUT);
digitalWrite(PIN_BUTTON_RIGHT, HIGH);
pinMode(PIN_BUTTON_LEFT, INPUT);
digitalWrite(PIN_BUTTON_LEFT, HIGH);
pinMode(PIN_BUTTON_UP, INPUT);
digitalWrite(PIN_BUTTON_UP, HIGH);
pinMode(PIN_BUTTON_DOWN, INPUT);
digitalWrite(PIN_BUTTON_DOWN, HIGH);
pinMode(PIN_BUTTON_TEMP, INPUT);
digitalWrite(PIN_BUTTON_TEMP, HIGH);
lcd.begin(16, 2);
pinMode(motor1_1,OUTPUT);
pinMode(motor1_2,OUTPUT);
pinMode(motor2_1,OUTPUT);
pinMode(motor2_2,OUTPUT);
pinMode(LED,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
pinMode(ledfarol,OUTPUT);
pinMode(Buzzer,OUTPUT);
}
void loop() {
if (digitalRead(PIN_BUTTON_UP) == LOW) { //frente
lcd.setCursor(0,0);
lcd.print("Botao 1");
lcd.setCursor(0,1);
lcd.print("Frente");
digitalWrite(motor2_2,LOW);
digitalWrite(motor1_2,LOW);
digitalWrite(motor1_1,HIGH);
digitalWrite(motor2_1,HIGH);
}
else
{
//button is not pressed
}
if (digitalRead(PIN_BUTTON_DOWN) == LOW) { //tras
lcd.setCursor(0,0);
lcd.print("Botao 2");
lcd.setCursor(0,1);
lcd.print("Ré");
digitalWrite(motor2_1,LOW);
digitalWrite(motor1_1,LOW);
digitalWrite(motor1_2,HIGH);
digitalWrite(motor2_2,HIGH);
}
else
{
//button is not pressed
}
/*if (digitalRead(PIN_BUTTON_UP) == LOW) { //parar
lcd.setCursor(0,0);
lcd.print("Botao 3");
lcd.setCursor(0,1);
lcd.print("Parar");
digitalWrite(motor2_2,LOW);
digitalWrite(motor1_2,LOW);
digitalWrite(motor2_1,LOW);
digitalWrite(motor1_1,LOW);
else
//button is not pressed
}*/
if (digitalRead(PIN_BUTTON_LEFT) == LOW) { //ESQUERDA
lcd.setCursor(0,0);
lcd.print("Botao 4");
lcd.setCursor(0,1);
lcd.print("Esquerda");
digitalWrite(motor2_1,LOW);
digitalWrite(motor1_2,LOW);
digitalWrite(motor1_1,HIGH);
digitalWrite(motor2_2,HIGH);
}
else
{
//button is not pressed
}
if (digitalRead(PIN_BUTTON_RIGHT) == LOW) { //DIREITA
lcd.setCursor(0,0);
lcd.print("Botao 5");
lcd.setCursor(0,1);
lcd.print("Direita");
digitalWrite(motor2_2,LOW);
digitalWrite(motor1_1,LOW);
digitalWrite(motor1_2,HIGH);
digitalWrite(motor2_1,HIGH);
}
else
{
//button is not pressed
}
if (digitalRead(PIN_BUTTON_TEMP) == LOW) { //temp
tempc=analogRead(temppin);
tempc=((5.0*tempc*100)/1024);
Serial.println(tempc);
lcd.setCursor(0,0);
lcd.print("Temperatura");
lcd.setCursor(0,1);
lcd.print(tempc);
}
else
{
//button is not pressed
}
}
ROBO ARDUINO 4WD - PROJETOS ELETRÔNICOS
sábado, 14 de dezembro de 2013
CODIGO ARDUINO 4WD
#include <Servo.h>
// pinos do Arduino para o registrador de deslocamento
#define MOTORLATCH 12
#define MOTORCLK 4
#define MOTORENABLE 7
#define MOTORDATA 8
// Estes são usados para definir a direção do motorista ponte.
#define MOTOR1_A 2
#define MOTOR1_B 3
#define MOTOR2_A 1
#define MOTOR2_B 4
#define MOTOR3_A 5
#define MOTOR3_B 7
#define MOTOR4_A 0
#define MOTOR4_B 6
// pinos do Arduino para os sinais PWM.
#define MOTOR1_PWM 11
#define MOTOR2_PWM 3
#define MOTOR3_PWM 6
#define MOTOR4_PWM 5
// Códigos para a função de motor.
#define FORWARD 1
#define BACKWARD 2
#define BRAKE 3
#define RELEASE 4
const byte PIN_BUTTON_RIGHT = 10;
const byte PIN_BUTTON_UP = 9;
const byte PIN_BUTTON_DOWN = 2;
const byte PIN_BUTTON_LEFT = 13;
void setup()
{
Serial.begin(9600);
Serial.println("Simple Adafruit Motor Shield sketch");
pinMode(PIN_BUTTON_RIGHT, INPUT);
digitalWrite(PIN_BUTTON_RIGHT, HIGH);
pinMode(PIN_BUTTON_LEFT, INPUT);
digitalWrite(PIN_BUTTON_LEFT, HIGH);
pinMode(PIN_BUTTON_UP, INPUT);
digitalWrite(PIN_BUTTON_UP, HIGH);
pinMode(PIN_BUTTON_DOWN, INPUT);
digitalWrite(PIN_BUTTON_DOWN, HIGH);
}
void loop()
{
if (digitalRead(PIN_BUTTON_LEFT) == LOW) { //ESQUERDA
// Button is pressed
motor(1, BACKWARD, 250);
delay(1);
motor(2, FORWARD, 250);
delay(1);
motor(3, BACKWARD, 250);
delay(1);
motor(4, FORWARD, 250);
delay(1);
//else
// Button is not pressed
}
if (digitalRead(PIN_BUTTON_RIGHT) == LOW) { //DIREITA
// Button is pressed
motor(1, FORWARD, 250);
delay(1);
motor(2, BACKWARD, 250);
delay(1);
motor(3, FORWARD, 250);
delay(1);
motor(4, BACKWARD, 250);
delay(1);
} else {
// Button is not pressed
}
if (digitalRead(PIN_BUTTON_UP) == LOW) {
// Button is pressed
motor(1, FORWARD, 250);
delay(1);
motor(2, FORWARD, 250);
delay(1);
motor(3, FORWARD, 250);
delay(1);
motor(4, FORWARD, 250);
delay(1);
} else {
// Button is not pressed
}
if (digitalRead(PIN_BUTTON_DOWN) == LOW) {
// Button is pressed
motor(1, BACKWARD, 250);
delay(1);
motor(2, BACKWARD, 250);
delay(1);
motor(3, BACKWARD, 250);
delay(1);
motor(4, BACKWARD, 250);
delay(1);
//else {
// Button is not pressed
//}
}
Serial.println();
/*
motor(1, BACKWARD, 250);
delay(1);
motor(2, BACKWARD, 250);
delay(1);
motor(3, BACKWARD, 250);
delay(1);
motor(4, BACKWARD, 250);
delay(1); */
}
void motor(int nMotor, int command, int speed)
{
int motorA, motorB;
if (nMotor >= 1 && nMotor <= 4)
{
switch (nMotor)
{
case 1:
motorA = MOTOR1_A;
motorB = MOTOR1_B;
break;
case 2:
motorA = MOTOR2_A;
motorB = MOTOR2_B;
break;
case 3:
motorA = MOTOR3_A;
motorB = MOTOR3_B;
break;
case 4:
motorA = MOTOR4_A;
motorB = MOTOR4_B;
break;
default:
break;
}
switch (command)
{
case FORWARD://(frente)
motor_output (motorA, HIGH, speed);
motor_output (motorB, LOW, -1); // -1: no PWM set
break;
case BACKWARD:
motor_output (motorA, LOW, speed);
motor_output (motorB, HIGH, -1); // -1: no PWM set
break;
case BRAKE:
motor_output (motorA, LOW, 255); //255: totalmente em
motor_output (motorB, LOW, -1); // -1: no PWM set
break;
case RELEASE:
motor_output (motorA, LOW, 0); // 0: output floating(flutuante saida).
motor_output (motorB, LOW, -1); // -1: no PWM set
break;
default:
break;
}
}
}
void motor_output (int output, int high_low, int speed)
{
int motorPWM;
switch (output)
{
case MOTOR1_A:
case MOTOR1_B:
motorPWM = MOTOR1_PWM;
break;
case MOTOR2_A:
case MOTOR2_B:
motorPWM = MOTOR2_PWM;
break;
case MOTOR3_A:
case MOTOR3_B:
motorPWM = MOTOR3_PWM;
break;
case MOTOR4_A:
case MOTOR4_B:
motorPWM = MOTOR4_PWM;
break;
default:
//Usar a velocidade como sinalizador de erro, -3333 = saída inválido.
speed = -3333;
break;
}
if (speed != -3333)
{
shiftWrite(output, high_low);
// definir PWM somente se ela é válida se
if (speed >= 0 && speed <= 255)
{
analogWrite(motorPWM, speed);
}
}
}
void shiftWrite(int output, int high_low)
{
static int latch_copy;
static int shift_register_initialized = false;
// Faz a inicialização em tempo real,
// Na primeira vez que é utilizado.
if (!shift_register_initialized)
{
// Definir pinos para registro de deslocamento para a saída
pinMode(MOTORLATCH, OUTPUT);
pinMode(MOTORENABLE, OUTPUT);
pinMode(MOTORDATA, OUTPUT);
pinMode(MOTORCLK, OUTPUT);
// Definir pinos para registro de deslocamento para o valor padrão (baixo);
digitalWrite(MOTORDATA, LOW);
digitalWrite(MOTORLATCH, LOW);
digitalWrite(MOTORCLK, LOW);
// Ativar o registo de deslocamento, defina Ativar pin Baixo
digitalWrite(MOTORENABLE, LOW);
// Inicia com todas as saídas (da mudança de registo) baixa
latch_copy = 0;
shift_register_initialized = true;
}
// A define alta e baixa são 1 e 0.
// Então, isso é válido.
bitWrite(latch_copy, output, high_low);
// Use o default 'shiftOut ()' Arduino função
// Mudar os bits com o MOTORCLK como relógio de pulso.
// O 74HC595 shiftregister quer o MSB primeiro.
// Depois disso, gerar um pulso trava com MOTORLATCH.
shiftOut(MOTORDATA, MOTORCLK, MSBFIRST, latch_copy);
delayMicroseconds(5); // Para sua segurança, não é realmente necessário.
digitalWrite(MOTORLATCH, HIGH);
delayMicroseconds(5); // Para sua segurança, não é realmente necessário.
digitalWrite(MOTORLATCH, LOW);
}
// pinos do Arduino para o registrador de deslocamento
#define MOTORLATCH 12
#define MOTORCLK 4
#define MOTORENABLE 7
#define MOTORDATA 8
// Estes são usados para definir a direção do motorista ponte.
#define MOTOR1_A 2
#define MOTOR1_B 3
#define MOTOR2_A 1
#define MOTOR2_B 4
#define MOTOR3_A 5
#define MOTOR3_B 7
#define MOTOR4_A 0
#define MOTOR4_B 6
// pinos do Arduino para os sinais PWM.
#define MOTOR1_PWM 11
#define MOTOR2_PWM 3
#define MOTOR3_PWM 6
#define MOTOR4_PWM 5
// Códigos para a função de motor.
#define FORWARD 1
#define BACKWARD 2
#define BRAKE 3
#define RELEASE 4
const byte PIN_BUTTON_RIGHT = 10;
const byte PIN_BUTTON_UP = 9;
const byte PIN_BUTTON_DOWN = 2;
const byte PIN_BUTTON_LEFT = 13;
void setup()
{
Serial.begin(9600);
Serial.println("Simple Adafruit Motor Shield sketch");
pinMode(PIN_BUTTON_RIGHT, INPUT);
digitalWrite(PIN_BUTTON_RIGHT, HIGH);
pinMode(PIN_BUTTON_LEFT, INPUT);
digitalWrite(PIN_BUTTON_LEFT, HIGH);
pinMode(PIN_BUTTON_UP, INPUT);
digitalWrite(PIN_BUTTON_UP, HIGH);
pinMode(PIN_BUTTON_DOWN, INPUT);
digitalWrite(PIN_BUTTON_DOWN, HIGH);
}
void loop()
{
if (digitalRead(PIN_BUTTON_LEFT) == LOW) { //ESQUERDA
// Button is pressed
motor(1, BACKWARD, 250);
delay(1);
motor(2, FORWARD, 250);
delay(1);
motor(3, BACKWARD, 250);
delay(1);
motor(4, FORWARD, 250);
delay(1);
//else
// Button is not pressed
}
if (digitalRead(PIN_BUTTON_RIGHT) == LOW) { //DIREITA
// Button is pressed
motor(1, FORWARD, 250);
delay(1);
motor(2, BACKWARD, 250);
delay(1);
motor(3, FORWARD, 250);
delay(1);
motor(4, BACKWARD, 250);
delay(1);
} else {
// Button is not pressed
}
if (digitalRead(PIN_BUTTON_UP) == LOW) {
// Button is pressed
motor(1, FORWARD, 250);
delay(1);
motor(2, FORWARD, 250);
delay(1);
motor(3, FORWARD, 250);
delay(1);
motor(4, FORWARD, 250);
delay(1);
} else {
// Button is not pressed
}
if (digitalRead(PIN_BUTTON_DOWN) == LOW) {
// Button is pressed
motor(1, BACKWARD, 250);
delay(1);
motor(2, BACKWARD, 250);
delay(1);
motor(3, BACKWARD, 250);
delay(1);
motor(4, BACKWARD, 250);
delay(1);
//else {
// Button is not pressed
//}
}
Serial.println();
/*
motor(1, BACKWARD, 250);
delay(1);
motor(2, BACKWARD, 250);
delay(1);
motor(3, BACKWARD, 250);
delay(1);
motor(4, BACKWARD, 250);
delay(1); */
}
void motor(int nMotor, int command, int speed)
{
int motorA, motorB;
if (nMotor >= 1 && nMotor <= 4)
{
switch (nMotor)
{
case 1:
motorA = MOTOR1_A;
motorB = MOTOR1_B;
break;
case 2:
motorA = MOTOR2_A;
motorB = MOTOR2_B;
break;
case 3:
motorA = MOTOR3_A;
motorB = MOTOR3_B;
break;
case 4:
motorA = MOTOR4_A;
motorB = MOTOR4_B;
break;
default:
break;
}
switch (command)
{
case FORWARD://(frente)
motor_output (motorA, HIGH, speed);
motor_output (motorB, LOW, -1); // -1: no PWM set
break;
case BACKWARD:
motor_output (motorA, LOW, speed);
motor_output (motorB, HIGH, -1); // -1: no PWM set
break;
case BRAKE:
motor_output (motorA, LOW, 255); //255: totalmente em
motor_output (motorB, LOW, -1); // -1: no PWM set
break;
case RELEASE:
motor_output (motorA, LOW, 0); // 0: output floating(flutuante saida).
motor_output (motorB, LOW, -1); // -1: no PWM set
break;
default:
break;
}
}
}
void motor_output (int output, int high_low, int speed)
{
int motorPWM;
switch (output)
{
case MOTOR1_A:
case MOTOR1_B:
motorPWM = MOTOR1_PWM;
break;
case MOTOR2_A:
case MOTOR2_B:
motorPWM = MOTOR2_PWM;
break;
case MOTOR3_A:
case MOTOR3_B:
motorPWM = MOTOR3_PWM;
break;
case MOTOR4_A:
case MOTOR4_B:
motorPWM = MOTOR4_PWM;
break;
default:
//Usar a velocidade como sinalizador de erro, -3333 = saída inválido.
speed = -3333;
break;
}
if (speed != -3333)
{
shiftWrite(output, high_low);
// definir PWM somente se ela é válida se
if (speed >= 0 && speed <= 255)
{
analogWrite(motorPWM, speed);
}
}
}
void shiftWrite(int output, int high_low)
{
static int latch_copy;
static int shift_register_initialized = false;
// Faz a inicialização em tempo real,
// Na primeira vez que é utilizado.
if (!shift_register_initialized)
{
// Definir pinos para registro de deslocamento para a saída
pinMode(MOTORLATCH, OUTPUT);
pinMode(MOTORENABLE, OUTPUT);
pinMode(MOTORDATA, OUTPUT);
pinMode(MOTORCLK, OUTPUT);
// Definir pinos para registro de deslocamento para o valor padrão (baixo);
digitalWrite(MOTORDATA, LOW);
digitalWrite(MOTORLATCH, LOW);
digitalWrite(MOTORCLK, LOW);
// Ativar o registo de deslocamento, defina Ativar pin Baixo
digitalWrite(MOTORENABLE, LOW);
// Inicia com todas as saídas (da mudança de registo) baixa
latch_copy = 0;
shift_register_initialized = true;
}
// A define alta e baixa são 1 e 0.
// Então, isso é válido.
bitWrite(latch_copy, output, high_low);
// Use o default 'shiftOut ()' Arduino função
// Mudar os bits com o MOTORCLK como relógio de pulso.
// O 74HC595 shiftregister quer o MSB primeiro.
// Depois disso, gerar um pulso trava com MOTORLATCH.
shiftOut(MOTORDATA, MOTORCLK, MSBFIRST, latch_copy);
delayMicroseconds(5); // Para sua segurança, não é realmente necessário.
digitalWrite(MOTORLATCH, HIGH);
delayMicroseconds(5); // Para sua segurança, não é realmente necessário.
digitalWrite(MOTORLATCH, LOW);
}
PÓS E CONTRAS
PÓS
CONTRA
- Nós aprofundamos no universo da eletrônica digital e dos microcontroladores(Arduino)
- Podemos ver na prática a junção da programação com a eletrônica digital
- A importância da atenção quanto a interligação de componentes eletrônicos
- A gama de conhecimento eletrônico que conseguimos absorver
- Enxergar que a plataforma Arduíno é vasta podendo ser realizado diversos projetos;
CONTRA
- Dificuldade quanto a compra de componentes eletrônicos na região
- Ter que refazer o código do Arduino por conta da queima da ponte h
- Ter que dormir de madrugada para sanar os problemas acima;
- Ter comprado pouco Jumper
COMPONENTES ELETRONICOS UTILIZADOS NO ROBO4WD
COMPONENTES ELETRONICOS UTILIZADOS NO ROBO4WD
Segue sugestões para montagem com links dos modelos apresentados
Sensor De Umidade E Temperatura Dht11
http://produto.mercadolivre.com.br/MLB-528288318-sensor-de-umidade-e-temperatura-dht11-pic-arduino-id871-_JM?redirectedFromParent=MLB516225032
Guia de estudo
Guia de Estudo
Data sheet
Documentos:
Modulo Rf 433mhz + Ht12d + Ht12e + Diagrama Ligação Id925
Módulo Joystick Shield V2.4, Crie Seu Video-game No Arduino
Módulo Motor De Passo Shield Para Arduino, Ponte H, H-bridge
Kit Chassis De Carro Robô Vermelho C/ 4 Motores - Arduino
Starter Kit Avançado (com Arduino Uno REV3 Original)
PRINCIPAIS TIPOS DE ARDUINOS
Arduino UNO
(Existem várias versões de Arduino UNO como UNO SMD, UNO R2 e o último UNO R3)
(Existem várias versões de Arduino UNO como UNO SMD, UNO R2 e o último UNO R3)
Microcontrolador
|
ATmega328
|
Tensão de operação
|
5V
|
Tensão de entrada (recomendada)
|
7-12V
|
Tensão de entrada (limites)
|
6-20V
|
Pinos de I/O Digitais
|
14 (6 deles com saída PWM)
|
Pinos Analógicos
|
6
|
Corrente CC por I/O Pino
|
40 mA
|
Corrente do Pino 3.3V
|
50 mA
|
Memória Flash
|
32 KB (ATmega328) 0.5 KB usado pelobootloader
|
SRAM
|
2 KB (ATmega328)
|
EEPROM
|
1 KB (ATmega328)
|
Velocidade do Clock
|
16 MHz
|
Ele é ideal para quem está começando com essa placa, muita gente que começa as vezes querem já fazendo projetos grandes ou pequenos para ver sua capacidade. Com certeza, caso o projeto não for muito elaborado e que precise usar todas as portas, acho um pouco difícil, esse é ótimos para os iniciantes e para quem já usa normalmente.
"Uno" significa um em italiano e é nomeado para marcar o lançamento do Arduino1.0
Arduino MEGA
(Existem outras versões também como MEGA UNO, MEGA R3)
(Existem outras versões também como MEGA UNO, MEGA R3)
Microcontrolador
|
ATmega2560
|
Tensão de operação
|
5V
|
Tensão de entrada (recomendada)
|
7-12V
|
Tensão de entrada (limites)
|
6-20V
|
Pinos de I/O Digitais
|
54 (14 deles com saída PWM)
|
Pinos Analógicos
|
16
|
Corrente CC por I/O Pino
|
40 mA
|
Corrente do Pino 3.3V
|
50 mA
|
Memória Flash
|
256 KB (ATmega2560) 8 KB usado pelobootloader
|
SRAM
|
8 KB (ATmega2560)
|
EEPROM
|
4 KB (ATmega2560)
|
Velocidade do Clock
|
16 MHz
|
O arduino mega possui bem mais portas, ótimo para projetos grandes que utilizariam muitas portas e também usar até os shields sem que atrapalhe no mesmo. Exemplo de projeto com isso é automatizar uma casa com ele, casa porta controlar um Relé para acionar as tomas, lâmpadas, etc.
Arduino ADK
Microcontrolador
|
ATmega2560
|
Tensão de operação
|
5V
|
Tensão de entrada (recomendada)
|
7-12V
|
Tensão de entrada (limites)
|
6-20V
|
Pinos de I/O Digitais
|
54 (14 deles com saída PWM)
|
Pinos Analógicos
|
16
|
Corrente CC por I/O Pino
|
40 mA
|
Corrente do Pino 3.3V
|
50 mA
|
Memória Flash
|
256 KB (ATmega2560) 8 KB usado pelobootloader
|
SRAM
|
8 KB (ATmega2560)
|
EEPROM
|
4 KB (ATmega2560)
|
Velocidade do Clock
|
16 MHz
|
A diferença do ADK para o Arduino MEGA em si é que o ADK possui uma porta USB que serve para ligar em aparelhos que possua Android. Essa placa serve para projeto que tenha interação com o Android.
Arduino Leonardo
(Essa placa é a mais recente, foi criada a pouco tempo)
Microcontrolador
|
ATmega32U4
|
Tensão de operação
|
5V
|
Tensão de entrada (recomendada)
|
7-12V
|
Tensão de entrada (limites)
|
6-20V
|
Pinos de I/O Digitais
|
20 (7 deles com saída PWM)
|
Pinos Analógicos
|
12
|
Corrente CC por I/O Pino
|
40 mA
|
Corrente do Pino 3.3V
|
50 mA
|
Memória Flash
|
32 KB (ATmega32U4) 4 KB usado pelobootloader
|
SRAM
|
2,5 KB (ATmega32U4)
|
EEPROM
|
1 KB (ATmega2560)
|
Velocidade do Clock
|
16 MHz
|
Essa placa é recente, serve para quem já está acostumado com o Arduino pois na programação criaram mais funções com ele, como usar a placa como teclado ou mouse. Outra coisa que difere das outras placas é que o processamento dele é mais rápido 32U4 sendo que os outros são 8U2.
O QUE O ARDUINO PODE FAZER?
Arduino pode perceber o ambiente ao receber a entrada de uma variedade de sensores, módulos ou Shields e pode afetar seus arredores por luzes de controle, motores e outros atuadores. O microcontrolador na placa é programado usando a linguagem de programação Arduino em Wiring e o ambiente de desenvolvimentoArduino. Projetos Arduino podem ser stand-alone ou podem comunicar com software rodando em um computador como: Flash, Processing, MaxMSP.
As placas podem ser construídas à mão ou comprados pré-montado, o software pode ser baixado gratuitamente no site oficial (www.arduino.cc). Os designs de referência do hardware são disponíveis sob uma licença de código aberto, sendo livre para adequá-los aos usuários.
O arduino de forma tão rápida conquistou mercado seleto que mais de 50 mil placas open source foram vendidas e rendeu um documentário de 2010 sobre a trajetória de desenvolvimento da plaquinha. As unidades são constituídas por controladora AtmelAVR de 8 bits, pinos digitais e analógicos de entrada e saída, entrada USB – o que permite conexão com computadores – ou serial e possui código aberto, que quando modificado, dá origem a outros derivados “ino” – que por questões comerciais – levam nomes como Netduino, Produino e Garagino. A placa Arduino não possui recursos de rede, mas pode ser combinada com outros Arduinos criando extensões chamadas deshields.
A tensão de entrada usada é entre 7 volts e máximo de 35 volts com corrente mínima de 300mA. A placa e demais circuitos funcionam com tensões entre 5 e 3,3 volts. Embutido no Arduino há ainda um firmware – que combina memória ROM para leitura e um programa gravado neste tipo de memória – carregado na memória da placa controladora, que aceita Windows, Linux e Mac OS X.
Em termos de software, o Arduino pode ter funcionalidades desenvolvidas por meio da linguagem C/C++, que utiliza uma interface gráfica escrita em Java. As funções IDE doArduino permitem o desenvolvimento de software que possa ser executado pelo dispositivo. A versão mais atualizada até o momento é a 1.0.5.
Com ele pode-se produzir automação de casas, acender luzes por meio da controladora ou projetos mais ousados como robo4wd (projeto universitário), BiometricSecurity Toy Box, que une a biometria, mais especificamente a ideia do novo sensor de identidade digital da Apple, o Touch ID do iPhone 5S, ao Arduino.
Assinar:
Postagens (Atom)