sábado, 1 de março de 2014

Projeto 9 - Usando LCD

Componentes necessários:

- Protobord
- Potenciômetro
- LCD 12 x 2
- Fios





 //Projeto 9 - Usando LCD  
 //Este código é de domínio público  
   
 #include <LiquidCrystal.h> //Inclui a biblioteca do LCD  
    
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD  
    
 int temp=0; // Utilizado para escrever no LCD, vai 0 - 9 e depois zera  
 int cont=0; // Depois que o temp passa do 9 o cont incrementa  
   
 void setup(){  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Bem vindo!");  
  lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD  
  lcd.print("Grupo ARmix");  
   
  lcd.setCursor(14, 0);  
  lcd.print(cont);  
 }  
    
 void loop(){  
  lcd.setCursor(13, 1); //Posiciona o cursor na décima quarta coluna(13) e na segunda linha(1) do LCD  
  lcd.print(temp); //Escreve o valor atual da variável de contagem no LCD  
  delay(1000);  
  temp++; //Incrementa variável de contagem  
    
  if(temp == 10){  
   cont++;   
   lcd.setCursor(14, 0); //Posiciona o cursor na décima quinta coluna(14) e na segunda linha(0) do LCD  
   lcd.print(cont); //Escreve o valor atual da variável cont no LCD, a cada 10 incrementos no temp  
   temp = 0; //...zera a variável de contagem  
  }  
 }  

sexta-feira, 28 de fevereiro de 2014

Projeto 8 - Brincando com LED RGB

Componentes necessários:

Modelo 1

- Protobord
- LED RGB de 5 mm
- 3 resitores de 100 ohms*
- Fios

Modelo  2

Trocamos o LED RGB por:
- LED vermelho de alto brilho 5 mm
- LED verde de alto brilho 5 mm
- LED azul de alto brilho 5 mm


Modelo 1

ATENÇÂO!!! Verificar as conexões


Modelo 2


*Verificar o resistor para o led, pois o valor pode ser diferente, para amblo modelos.




 //Projeto 8 - Brincando com LED RGB  
 //Este código é de domínio público  
   
 int greenPin = 3;  
 int redPin = 6;  
 int bluePin = 5;  
   
 void setup(){  
  pinMode(redPin, OUTPUT);  
  pinMode(bluePin, OUTPUT);  
  pinMode(greenPin, OUTPUT);  
 }  
   
 void loop(){  
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(bluePin, i);  
   analogWrite(redPin, 255-i);  
  delay(30);   
  }   
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(bluePin, 255-i);  
   analogWrite(redPin, i);  
  delay(30);   
  }   
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(greenPin, i);  
   analogWrite(redPin, 255-i);  
  delay(30);   
  }   
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(bluePin, i);  
   analogWrite(greenPin, 255-i);  
  delay(30);   
  }   
  //---------------------------------  
   for(int i=0; i<=255; i++){  
   analogWrite(bluePin, 255-i);  
   analogWrite(greenPin, i);  
  delay(30);   
  }   
  //---------------------------------  
   for(int i=0; i<=255; i++){  
   analogWrite(greenPin, 255-i);  
   analogWrite(redPin, i);  
  delay(30);   
  }   
  //---------------------------------  
 for(int i=0; i<=255; i++){  
   analogWrite(greenPin, 255-i);  
   analogWrite(redPin, i);  
   analogWrite(bluePin, i);  
  delay(30);   
  }   
 //---------------------------------  
 for(float i=0; i<=255; i++){  
   analogWrite(greenPin, i);  
   analogWrite(redPin, 255-i);  
   analogWrite(bluePin, 255-(i/3));  
  delay(30);   
  }   
 //---------------------------------  
   
 for(int i=0; i<=255; i++){  
   analogWrite(greenPin, 255-i);  
   analogWrite(redPin, i);  
   analogWrite(bluePin, 255-i);  
  delay(30);   
  }   
 //---------------------------------   
  delay(1000);           
 }  



quarta-feira, 26 de fevereiro de 2014

Projeto 7 - Precionando button para ligar o LED







 //Projeto 7 - Precionando button para ligar o LED  
   
 int ledPin = 8;  
 int button = 3; //Botão  
   
 void setup(){  
  pinMode(ledPin, OUTPUT); // Inicializa o pino de saída do arduino  
  pinMode(button, INPUT); // Inicializa o pino entrara para receber sinal  
 }  
   
 void loop(){  
  int state = digitalRead(button); // Recebe sinal do botão  
    
  if(state == HIGH){ // Se o botão estiver precionado liga o LED  
   digitalWrite(ledPin, HIGH);  
  }  
  else{       // Senão o LED apaga  
   digitalWrite(ledPin, LOW);  
  }  
 }  

terça-feira, 25 de fevereiro de 2014

Projeto 6 - Efeito interativo de iluminação sequencial com LEDs

Componentes necessários:

-  Protobord
- 10 LEDs de 5 mm
- 10 resitores de 100 ohms*
- Fios
-Potenciômetro


*Verificar o resistor para o led, pois o valor pode ser diferente.



 //Projeto 6 - Efeito interativo de iluminação sequencial com LEDs  
 //Este código é de domínio público  
   
 byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Cria um array para os pinos dos LEDs  
 int ledDelay;                       // intervalo entre as alterações  
 int direction = 1;  
 int currentLED = 0;  
 unsigned long changeTime;  
 int potPin = 2;             // seleciona o pino de entrada para o potenciômetro  
   
 void setup(){  
  for (int x=0; x<10; x++) {              // define todos os pinos como saída  
   pinMode(ledPin[x], OUTPUT);  
  }  
  changeTime = millis();  
 }  
   
 void loop(){  
  ledDelay = analogRead(potPin);               // lê o valor do potenciômetro  
  if ((millis() - changeTime) > ledDelay) { // verifica se transcorreram ledDelay ms desde a  
   changeLED();                             // última alteração  
   changeTime = millis();  
   }  
 }  
   
 void changeLED() {  
  for (int x=0; x<10; x++) {                     // apaga todos os LEDs  
   digitalWrite(ledPin[x], LOW);  
  }  
  digitalWrite(ledPin[currentLED], HIGH);               // acende o LED atual  
  currentLED += direction;         // incrementa de acordo com o valor de direction  
                        // altera a direção se tivermos atingido o fim  
  if (currentLED == 9) {direction = -1;}  
  if (currentLED == 0) {direction = 1;}  
 }  

Projeto 5 - Efeito de iluminação sequencial com LEDs

Componentes necessários:

-  Protobord
- 10 LEDs de 5 mm
- 10 resitores de 100 ohms*
- Fios



*Verificar o resistor para o led, pois o valor pode ser diferente.



 //Projeto 5 - Efeito de iluminação sequencial com LEDs  
 //Este código é de domínio público  
   
 byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // cria um array para os pinos dos LEDs  
 int ledDelay(65);                     // intervalo entre as alterações  
 int direction = 1;  
 int currentLED = 0;  
 unsigned long changeTime;  
   
 void setup(){  
  for (int x=4; x<14; x++) {              // define todos os pinos como saída  
   pinMode(ledPin[x], OUTPUT);   
  }  
  changeTime = millis();  
 }  
   
 void loop() {  
  if ((millis() - changeTime) > ledDelay) {    // verifica se já transcorreram ledDelay   
   changeLED();                       // ms desde a última alteração  
   changeTime = millis();  
  }  
 }  
   
 void changeLED() {  
  for (int x=4; x<14; x++) {                     // apaga todos os LEDs  
   digitalWrite(ledPin[x], LOW);  
  }  
  digitalWrite(ledPin[currentLED], HIGH);               // acende o LED atual  
  currentLED += direction;         // incrementa de acordo com o valor de direction  
                        // altera a direção se tivermos atingido o fim  
  if (currentLED == 13) {direction = -1;}  
  if (currentLED == 4) {direction = 1;}  
 }  
 //Projeto 6 - Efeito interativo de iluminação sequencial com LEDs  
 //Este código é de domínio público  
   
 byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Cria um array para os pinos dos LEDs  
 int ledDelay;                       // intervalo entre as alterações  
 int direction = 1;  
 int currentLED = 0;  
 unsigned long changeTime;  
 int potPin = 2;             // seleciona o pino de entrada para o potenciômetro  
   
 void setup(){  
  for (int x=0; x<10; x++) {              // define todos os pinos como saída  
   pinMode(ledPin[x], OUTPUT);  
  }  
  changeTime = millis();  
 }  
   
 void loop(){  
  ledDelay = analogRead(potPin);               // lê o valor do potenciômetro  
  if ((millis() - changeTime) > ledDelay) { // verifica se transcorreram ledDelay ms desde a  
   changeLED();                             // última alteração  
   changeTime = millis();  
   }  
 }  
   
 void changeLED() {  
  for (int x=0; x<10; x++) {                     // apaga todos os LEDs  
   digitalWrite(ledPin[x], LOW);  
  }  
  digitalWrite(ledPin[currentLED], HIGH);               // acende o LED atual  
  currentLED += direction;         // incrementa de acordo com o valor de direction  
                        // altera a direção se tivermos atingido o fim  
  if (currentLED == 9) {direction = -1;}  
  if (currentLED == 0) {direction = 1;}  
 }  

Projeto 4 - Semáforo interativo

Projeto 3 - Semáforo

Componentes necessários:

- Protobord
- LED vermelho, amarelo e verde de 5 mm
- 3 resitores de 100 ohms*
- Fios






 //Projeto 3 - Semáforo  
 //Este código é de domínio público  
   
 int redPin = 8;  
 int yellowPin = 7;  
 int greenPin = 6;  
   
 void setup(){  
  pinMode(redPin, OUTPUT);  
  pinMode(yellowPin, OUTPUT);  
  pinMode(greenPin, OUTPUT);  
 }  
   
 void loop(){  
  digitalWrite(redPin, HIGH);  // Liga LED vermelho  
  delay(1000);          // espera 1 segundo  
  digitalWrite(yellowPin, HIGH); // Liga LED amarelo  
  delay(500);          // espera 5 ms  
  digitalWrite(redPin, LOW);  
  digitalWrite(yellowPin, LOW); // Apaga LED amarelo e vermelho  
    
  digitalWrite(greenPin, HIGH); // Liga o LED verde  
  delay(1500);          // espera 1,5 segundo  
 }  
   

Projeto 2 - Sinalizador de código Morse S.O.S.

Componentes necessários:
 -Protobord
- LED de 5 mm
- Resitor de 100 ohms*
- Fios



 *Verificar o resistor para o led, pois o valor pode ser diferente.


 //Projeto 2 - Código Morse S.O.S.  
 //Este código é de domínio público  
   
 int ledPin = 8;         // LED conectado ao pino 8  
   
 void setup(){  
  pinMode(ledPin, OUTPUT);  
 }  
   
 void loop(){  
    
  // 3 pontos  
  for(int x=0; x<3; x++){    // Repete o processo 3 vezes  
   digitalWrite(ledPin, HIGH); // Liga o LED  
   delay(150);         // espera 150 milissegundo   
   digitalWrite(ledPin, LOW); // Desliga o LED  
   delay(100);         // espera 100 milissegundo
  }  
    
  // espera 100 ms para ter um intervalo entre as letras  
  delay(100);  
    
  // 3 traços  
  for(int x=0; x<3; x++){    // Repete o processo 3 vezes  
   digitalWrite(ledPin, HIGH); // Liga o LED  
   delay(400);         // espera 150 milissegundo
   digitalWrite(ledPin, LOW); // Desliga o LED  
   delay(100);         // espera 100 milissegundo
  }  
    
  // espera 100 ms para ter um intervalo entre as letras  
  delay(100);  
    
  // 3 pontos novamente  
  for(int x=0; x<3; x++){    // Repete o processo 3 vezes  
   digitalWrite(ledPin, HIGH); // Liga o LED  
   delay(150);         // espera 150 milissegundo
   digitalWrite(ledPin, LOW); // Desliga o LED  
   delay(100);         // espera 100 milissegundo
  }  
    
  delay(5000); // espera 5 segundos antes de repetir o sinal de SOS  
 }    

segunda-feira, 24 de fevereiro de 2014

Projeto 1 - Aprendendo ligar LED

Componentes necessários:

- Protobord
- LED de 5 mm
- Resitor de 100 ohms*
- Fios



*Verificar o resistor para o led, pois o valor pode ser diferente.

  //Projeto 1 - Aprendendo ligar LED   
 //Este código é de domínio público   
    
  int ledPin = 8;   
     
  void setup(){   
  pinMode(ledPin, OUTPUT);   
  }   
     
  void loop(){   
  digitalWrite(ledPin, HIGH); // Liga o LED   
  delay(500);     // espera 5 milissegundo   
  digitalWrite(ledPin, LOW); // Desliga o LED   
  delay(500);     // espera 5 milissegundo   
  }  

domingo, 23 de fevereiro de 2014

Funções

 Funções
    As funções são referências essenciais para o desenvolvimento de um projeto usando o Arduino,
principalmente para os iniciantes no assunto. Essas funções já implementadas e disponíveis em bibliotecas direcionam e exemplificam as funcionalidades básicas do microcontrolador.
Temos como funções básicas e de referências seguintes funções:

Digital I/O
      pinMode() digitalWrite() digitalRead()
Analógico I/O
     analogReference() analogRead() analogWrite() - PWM
Avançado I/O
      tone() noTone() shiftOut() pulseIn()
Tempo
      millis() micros() delay() delayMicroseconds()
Matemática
      min() max() abs() constrain() map() pow() sqrt()
Trigonométrica
      sin() cos() tan()
Números aleatórios
      randomSeed() random()
bits e Bytes
      lowByte() highByte() bitRead() bitWrite() bitSet() bitClear() bit()
Interrupções externas
      attachInterrupt() detachInterrupt()
Interrupções
      interrupts() noInterrupts()
Comunicação Serial


 Bibliotecas
O uso de bibliotecas nos proporciona um horizonte de programação mais amplo e diverso
quando comparado a utilização apenas de estruturas, valores e funções Isso e perceptível
quando analisamos os assuntos que são abordados por cada biblioteca em específico. Lembrando
sempre que, para se fazer uso de uma biblioteca, esta já deve estar instalada e disponível na
sua máquina. Temos as seguintes bibliotecas de referência:

EEPROM - para reprogramar a memória de armazenamento permanente.
Ethernet - para se conectar a uma rede Ethernet usando o Arduino Ethernet Shield.
Firmata - para se comunicar com os aplicativos no computador usando o protocolo Firmata.
LiquidCrystal - para controlar telas de cristal l quido (LCDs).
Servo - para controlar servomotores.
SPI - para se comunicar com dispositivos que utilizam a Serial Peripheral Interface (SPI).
SoftwareSerial - para a comunicação serial em qualquer um dos pinos digitais.
Stepper - para controlar motores de passo.
Wire (Two Wire Interface { TWI/I2C) - para enviar e receber dados através de uma rede
de dispositivos ou sensores.

Temos como referência também, o uso de bibliotecas mais específicas. O que é de extrema
importância quando se faz o uso do arduino com um enfoque em uma determinada área. Como
por exemplo:

Comunicação (redes e protocolos)
    Messenger - para o processamento de mensagens de texto a partir do computador.
    NewSoftSerial - uma versão melhorada da biblioteca SoftwareSerial.
    OneWire - dispositivos de controle que usam o protocolo OneWire.
    PS2Keyboard - ler caracteres de um PS2 teclado.
    Simple Message System - enviar mensagens entre Arduino e o computador.
    SSerial2Mobile - enviar mensagens de texto ou de e-mail, usando um telefone celular.
    Webduino - biblioteca que cria um servidor Web (para uso com o Arduino Ethernet Shield).
    X10 - envio de sinais X10 nas linhas de energia AC.
    XBee - para se comunicar via protocolo XBee.
    SerialControl - controle remoto atrav es de uma conexão serial.

Sensoriamento
    Capacitive Sensing - Transformar dois ou mais pinos em sensores capacitivos.
    Debounce - Leitura de ruidos na entrada digital.

Geração de Frequência e de Audio
    Tone - Gerar ondas quadradas de frequência de áudio em qualquer pino do microcontrolador.

Temporizaçãoo
    DateTime - Uma biblioteca para se manter informado da data e hora atuais do software.
    Metro - Ajuda ao programador a acionar o tempo em intervalos regulares.
    MsTimer2 - Utiliza o temporizador de 2 de interrupção para desencadear uma ação a cada N ms.

Utilidades
    TextString (String) - Manipular strings
    PString - uma classe leve para imprimir em buffers.
    Streaming - Um método para simplificar as declarações de impressão.

Curiosidade sobre blog ARmix

    Esse blog tem por objetivo compartilhar vários projetos básicos para que se tenha uma noção básica do funcionamento dos recursos que o arduino disponibiliza.
    Além de ser um tutorial sobre o arduino, esperamos que esse blog possa ser bem útil e ajude-os nos trabalhos que querem realizar.

Um pouco sobre a história do arduino

Em breve...