Curso introdutório
Arduino pra quem não tem Arduino
Simulador
Perfil do aluno?
Microcontrolador Atmel
Computador num chip
Processador + Memória + Entrada/Saída
Baixo custo $
Baixo consumo energético
Automação
Microcontrolador Atmel
Software livre
Hardware livre
Baixo custo
Modularidade
Reaproveitamento de Hardware e Software
Vantagens do uso de um simulador num projeto microcontrolado?
Por que não funcionou? Hardware, software?
Componentes
Código
Iniciar a simulação
Software
+
Hardware
// variáveis globais
int pino_led = 12;
//Função de inicalização
void setup(){
pinMode(pino_led, OUTPUT);
}
// Loop principal
void loop(){
digitalWrite(pino_led, HIGH);
delay(1000); // espera 1000 milissegundos
digitalWrite(pino_led, LOW);
delay(1000); // espera 1000 milissegundos
}
Crie a conta no Tinkercad
Inclua os circuitos usados até agora ao seu perfil
Modifique o hardware e o software agora!
Faça o led embutido da placa conectado ao pino 13 piscar alternadamente com o led do pino 12.
// variáveis globais
int pino_led_embutido = 13;
int pino_led_externo = 12;
// Inicialização de variávies, módulos, pinos, etc
void setup(){
pinMode(pino_led_embutido, OUTPUT);
pinMode(pino_led_externo, OUTPUT);
}
// Laço principal
void loop(){
digitalWrite(pino_led_embutido, HIGH);
digitalWrite(pino_led_externo, LOW);
delay(1000); // espera 1000 milissegundos
digitalWrite(pino_led_embutido, LOW);
digitalWrite(pino_led_externo, HIGH);
delay(1000); // espera 1000 milissegundos
}
// variáveis globaiss
int pino_led_embutido = 13;
int pino_led_externo = 12;
void piscar(int tempo){
digitalWrite(pino_led_embutido, HIGH);
digitalWrite(pino_led_externo, LOW);
delay(tempo); // espera
digitalWrite(pino_led_embutido, LOW);
digitalWrite(pino_led_externo, HIGH);
delay(tempo); // espera
}
// Inicialização de variávies, módulos e pinos
void setup(){
pinMode(pino_led_embutido, OUTPUT);
pinMode(pino_led_externo, OUTPUT);
}
// Laço principal
void loop(){
piscar(250);
piscar(500);
piscar(1000);
piscar(2000);
}
// variáveis globaiss
int pino_led_embutido = 13;
int pino_led_externo = 12;
void piscar(int tempo){
digitalWrite(pino_led_embutido, HIGH);
digitalWrite(pino_led_externo, LOW);
delay(tempo); // espera
digitalWrite(pino_led_embutido, LOW);
digitalWrite(pino_led_externo, HIGH);
delay(tempo); // espera
}
// Inicialização de variávies, módulos e pinos
void setup(){
pinMode(pino_led_embutido, OUTPUT);
pinMode(pino_led_externo, OUTPUT);
}
// Laço principal
void loop(){
for(int i=250;i<=2000;i=i+250){
piscar(i);
}
}
mas e entrada?
conectando push button ao arduino
Modifique o exemplo(hardware/software) anterior incluindo um botão para ligar o led e um segundo para desligar.
const int botao_liga = 8;
const int botao_desliga = 7; // pino de entrada (ligar o botão)
const int ledPin = 12; // Pino de saída (ligar o led)
int estado_botao_liga;
int estado_botao_desliga;
void setup() {
// Inicializa o pino do led como saída
pinMode(ledPin, OUTPUT);
// Inicializa o pino do botão como entrada
pinMode(botao_liga, INPUT);
pinMode(botao_desliga, INPUT);
}
void loop() {
// le o pino de entrada de forma digital
estado_botao_liga = digitalRead(botao_liga);
estado_botao_desliga = digitalRead(botao_desliga);
// Se o botão tiver sido pressionado
if (estado_botao_liga == HIGH) {
// liga o led
digitalWrite(ledPin, HIGH);
}
if (estado_botao_desliga == HIGH) {
// desliga o led
digitalWrite(ledPin, LOW);
}
}
OK! Mas, e entradas e saídas analógicas?
Muito usada para fazer interface com sensores!
Pinos especiais para conexão
Muito usada para fazer interface com atuadores!
Pinos especiais para conexão?
Pulse Width Modulation - PWM
int brilho = 0;
void setup(){
pinMode(9, OUTPUT);
}
void loop(){
for (brilho = 0; brilho <= 255; brilho += 5) {
analogWrite(9, brilho);
delay(30); // Wait for 30 millisecond(s)
}
for (brilho = 255; brilho >= 0; brilho -= 5) {
analogWrite(9, brilho);
delay(30); // Wait for 30 millisecond(s)
}
}
Comunicação serial
void setup(){
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop(){
Serial.println("ola mundo");
delay(10); // macete para melhorar a simulacao
}
Modifique o hardware/fimrware anteriores para enviar o valor da entrada analógica pela porta serial ao computador.
Dica: pode começar por aqui: Circuito 10
int sensorValue = 0;
void setup(){
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop(){
// read the input on analog pin 0:
sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(10); // Delay a little bit to improve simulation performance
}
Apresentanção feita usando reveal.js