Sunday, January 22, 2017

12. Acesso a componentes de arrays com botões

Usaremos o mesmo circuito usado no post 11, mas agora não daremos atenção ao led e sim à saída no monitor serial.

Lição do curso:
Coursera: Electrones en Acción: Electrónica y Arduinos para tus propios Inventos 
Pontificia Universidad Católica de Chile

Implementação em Autodesk Circuits



O sketch usado é mostrado abaixo:

*/
// Variables globales
int btn1 = 8;
int btn2 = 7;
int indice = 3; // Iniciacion y asignacion de la variable del indice
int inc; // Iniciacion de la variable de incremento
int dec; // Iniciacion de la variable de decrecimiento
char arreglo[] = {'a','b','c','d','e','f','g','h'}; // Arreglo del alfabeto
void setup() {
pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
Serial.begin(9600);
delay(2000);
}
void loop() {

// Se leen los botones
inc = digitalRead(btn1);
dec = digitalRead(btn2);

indice = indice + inc - dec; // El valor de indice aumenta cuando se presiona
// el boton 1 y disminuye cuando se presiona el boton 2

Serial.print(indice); // Se muestra el valor del indice en la serial para ver como cambia
Serial.print(" -> ");
Serial.println(arreglo[indice]);// Se muestra el elemento del arreglo correspondiente al indice
delay(500); // Un tiempo de espera para facilitar la visualizacion en la serial

}
/*
* Se debe notar que al aumentar el valor del indice, mas alla del numero de
* elementos que contiene el arreglo, en la serial se vera un valor incierto.

*/

11. Frequencia de intermitência controlada por botões

Lição do curso:
Coursera: Electrones en Acción: Electrónica y Arduinos para tus propios Inventos 
Pontificia Universidad Católica de Chile

Simulação em Autodesk Circuits

/*
Esta experiencia pretende mostrar el uso de variables. El tiempo de encendido/apagado del led

se almacena en una variable, la cual puede ser cambiada por las entradas de los botones.

*/

// Variables globales


int btn1 = 8;

int btn2 = 7;
int ledpin = 11;
int tmpo = 500; // Iniciacion y asignacion de la variable del tiempo
int inc; // Iniciacion de la variable de incremento
int dec; // Iniciacion de la variable de decrecimiento

void setup() {

pinMode(ledpin, OUTPUT);
pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
Serial.begin(9600);
delay(2000);
}

void loop() {

inc = digitalRead(btn1); // inc toma el valor del pin btn1
dec = digitalRead(btn2); // dec toma el valor del pin btn2
tmpo = tmpo + 50*inc - 50*dec; // El valor de tmpo se modifica
Serial.println(tmpo); // Se imprime el valor de tmpo
//Encendido y apagado del LED
digitalWrite(ledpin, HIGH);
delay(tmpo);
digitalWrite(ledpin, LOW);
delay(tmpo);
}




Exemplo de implentação:



Exercício: Implemente este circuito de modo diferente do mostrado acima.

Friday, January 20, 2017

10. Botão com controle lógico

Já vimos como um botão pode controlar um led analogicamente (contato elétrico). Aqui veremos que isso pode ser feito logicamente.






















int btn=0;
void setup(){
  pinMode(8,INPUT);
  pinMode(11,OUTPUT);
}
void loop(){
  btn=digitalRead(8);
  digitalWrite(11,btn);

}


Exercício: Implemente este circuito baseado no esquema acima. Inicialmente simule e depois monte o circuito real. Use R1 = 220 ohms e R2 = 10kohms. Uma solução é mostrada a seguir: