Postagens

Mostrando postagens de setembro, 2019

Girassol com servo e atmega328

//girassol com servo e atmega328 //fonte: //pedroluand@gmail.com //versao:1.0 //19-11-2018 #include "Servo.h" //biblioteca controle de servo Servo myservo; int pos = 0; int inputPhotoLeft = 1; int inputPhotoRight = 0; int Left = 0; int Right = 0; void setup()  { Serial.begin(9600); myservo.attach(9); } void loop()  { Left = analogRead(inputPhotoLeft); Right = analogRead(inputPhotoRight); Serial.println(Left); Serial.println(Right); if (Left > (Right +20))  { if (pos < 179) pos++; myservo.write(pos); } if (Right > (Left +20))  { if (pos > 1) pos -= 1; myservo.write(pos); } delay(10); }

PROJETO ARDUSAT TRANSMISSOR/RECEPTOR

/* PROJETO ARDUSAT TRANSMISSOR/RECEPTOR inicialmente planejado com utilização do Atmega328 versão: 1.0 início do projeto: 31-10-2018 criador do projeto: pedroluand licença de uso: restrito contatos: pedroluand@gmail.com / pedroluand@hotmail.com / pedroluand@yahoo.com */ //bibliotecas em utilização: #include <SD.h>                //biblioteca para cartao sd #include <SPI.h>               //biblioteca para conexão spi #include <Wire.h>              //biblioteca para conexão I2C #include <Servo.h>             //biblioteca para servos #include <EEPROM.h>            //biblioteca para eeprom interna #include <LiquidCrystal_I2C.h> //biblioteca para display lcd com modulo I2C #include <RF24.h>              //biblioteca para modulo transeptor nrf2401 #include <nRF24L01.h>          //biblioteca para modulo transeptor nrf2401 //#include <printf.h>          //biblioteca para modulo transeptor nrf2401 //#include <RF24_conf

Modulo display de 4 x 7 segmentos utilizando o 74HC164

//Modulo display de 4 x 7 segmentos utilizando o 74HC164 //Com base do código extraido do site: //http://www.instructables.com/id/The-74HC164-Shift-Register-and-your-Arduino/ //pedroluand@gmail.com //versão:1.1 controle dos quatro digitos do display //16-11-2018 //versao:1.0 controle de apenas 1 digito do display //08-11-2017 /* //ligação do display no ci 74hc164        _a_               f|   |b              |-g-|               e|___|c                d                    byte sup   = B01000000; //pino 4  do 74hc164 segimento a (ligar no pino 14 do display)    byte dsup  = B00000010; //pino 12 do 74hc164 segimento b (ligar no pino 08 do display) byte dinf  = B00000100; //pino 11 do 74hc164 segimento c (ligar no pino 06 do display) byte inf   = B00010000; //pino 6  do 74hc164 segimento d (ligar no pino 07 do display) byte einf  = B00001000; //pino 10 do 74hc164 segimento e (ligar no pino 04 do display) byte esup  = B00100000; //pino 5  do 74hc164 segimento f (ligar

Relógio de ponto utilizando modulo rtc3231 sd card e lcd 16x2

//relogio de ponto utilizando modulo rtc3231 sd card e lcd 16x2 //versão 1.0 //18-03-2019 //pedroluand@gmail.com #include <SD.h> #include <SPI.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <DS3231.h>      //Biblioteca para manipulação do DS3231 LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3,POSITIVE); File myFile; // data log DS3231 rtc;              //Criação do objeto do tipo DS3231 RTCDateTime dataehora;   //Criação do objeto do tipo RTCDateTime    void setup()    {    lcd.begin(16,2);    rtc.begin();            //Inicialização do RTC DS3231    // rtc.setDateTime(__DATE__, __TIME__);   //Configurando valores iniciais    pinMode(8,INPUT_PULLUP); //registra horário inicial    pinMode(9,INPUT_PULLUP); //registra horário final    while (!Serial) { // data log    ; // data log    }    if (!SD.begin(4)) { // data log    lcd.print("CARTAO NAO INSERIDO!"); // data log    delay(2000);    lcd.clear();    return; /

Display 4x 7 segmentos sem codificador

/*  * Display 4x 7 segmentos sem codificador  * versao 1.0  * 14-07-2019  * pedroluand@gmail.com ligação do display no ci 74hc164         _a_               f|       |b              |  -g- |              e |___|c                d      descrição dos pinos do display      14 13 12 11 10 09 08                   .  .  .  .  .  .  .                  display mod.ULH4RC                       .  .  .  .  .  .  .                     01 02 03 04 05 06 07          pino 01= GND1 pino 02= (seg. d) pino 03= nc pino 04= seg. e pino 05= GND3 pino 06= seg. c pino 07= seg. d pino 08= seg. b pino 09= GND4 pino 10= seg. g  pino 11= divisor de horas pino 12= GND2 pino 13= seg. f pino 14= seg. a */ #define refresh delay(6) #define nada digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,LOW);digitalWrite(11,LOW);digitalWrite(12,LOW); #define zero digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH

TX telemetria com modulo 433 mhz

//TX telemetria com modulo 433 mhz //versão 0.1 //20-02-2018 //pedroluand@gmail.com  #include <VirtualWire.h>  const int TX = 9; //pino tx  int a;  int t=200;  void setup() {   pinMode(8,INPUT_PULLUP);     vw_set_tx_pin(TX);     vw_set_ptt_inverted(true); // Requerido para DR3100     vw_setup(2000); // Bits por segundos     } void loop() {   int valor=digitalRead(8);     if(valor==LOW)     {       t-=10;     }     if(t==10)     {       t=200;     }     char SensorCharMsg[10];     itoa(a, SensorCharMsg,10);     vw_send((uint8_t *)SensorCharMsg, strlen(SensorCharMsg));     vw_wait_tx(); // Espera o envio da informacao     a+=1;     delay(t);     if(a==2)     {       a=0;     }         }

RX telemetria com modulo 433mhz

//RX telemetria com modulo 433mhz //versão 0.1 //16-02-2018 //pedroluand@gmail.com #include <Wire.h> #include <VirtualWire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0X3F,2,1,0,4,5,6,7,3,POSITIVE); byte message[VW_MAX_MESSAGE_LEN];    // Armazena as mensagens recebidas byte msgLength = VW_MAX_MESSAGE_LEN; // Armazena o tamanho das mensagens void setup()   {     lcd.begin(20,4);     vw_set_rx_pin(9);     vw_setup(2000);             // Bits por segundo     vw_rx_start();              // Inicializa o receptor } void loop() { uint8_t message[VW_MAX_MESSAGE_LEN];    uint8_t msgLength = VW_MAX_MESSAGE_LEN;   lcd.setCursor(0,0);    if (vw_get_message(message, &msgLength)) // Non-blocking   {     //  lcd.print("Recebido: ");   lcd.clear();     for (int i = 0; i < msgLength; i++)      {           lcd.write(message[i]);      }      }      }

RX universal para modulos 433mhz

//RX universal para modulos 433mhz //versão 0.1 //04-01-2019 //pedroluand@gmail.com #include <Wire.h> #include <VirtualWire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0X3F,2,1,0,4,5,6,7,3,POSITIVE); byte message[VW_MAX_MESSAGE_LEN];    // Armazena as mensagens recebidas byte msgLength = VW_MAX_MESSAGE_LEN; // Armazena o tamanho das mensagens void setup()   {     Serial.begin(9600);     lcd.begin(20,4);     pinMode(8,OUTPUT);     vw_set_rx_pin(9);     vw_setup(2000);             // Bits por segundo     vw_rx_start();              // Inicializa o receptor } void loop() { uint8_t message[VW_MAX_MESSAGE_LEN];    uint8_t msgLength = VW_MAX_MESSAGE_LEN;   lcd.setCursor(0,0);    if (vw_get_message(message, &msgLength)) // Non-blocking   {     //lcd.print("RECEBENDO");     //lcd.clear();   for (int i = 0; i < msgLength; i++)      {           //digitalWrite(8,HIGH);           tone(8,600,50);           delay(500);

senha seis botoes para abertura de portas eletrônicas

//senha seis botoes para abertura de portas eletrônicas //senha: 5-6-9-10-11-12 //para trocar a senha faça inversao da ordem dos fios do teclado //04-08-2019 //revisao 07-08-2019 //incluido armazenamento das tentativas na eeprom interna //incluido desarme (iniciar com d5 pressionado) //pedroluand@gmail.com #include <EEPROM.h> #define beep tone(7,600,50) #define erro tone(7,400,1000) #define alerta tone(7,600,300000) int a; //registro da senha int b; //contador de erro int c; //contador de tentativas int memoria = 0; //memoria na eeprom void setup() {   pinMode(5,INPUT_PULLUP);   pinMode(6,INPUT_PULLUP);   pinMode(7,OUTPUT); //buzzer   pinMode(8,OUTPUT); //relé   pinMode(9,INPUT_PULLUP);   pinMode(10,INPUT_PULLUP);   pinMode(11,INPUT_PULLUP);   pinMode(12,INPUT_PULLUP);       Serial.begin(9600);       //se iniciado com d5 pressionado   if (digitalRead(5) == LOW) //zera o numero de tentativas na eeprom e desarma o alarme   {   c=0;   EEPROM.writ