Ir ao conteúdo
  • Cadastre-se

MicSG

Membro VIP
  • Posts

    202
  • Cadastrado em

  • Última visita

Tudo que MicSG postou

  1. Olá Pessoal, Desculpem-me pela demora, pois estava com problemas na internet. Eu fiz um Sistema de Menu para LCD, que é adaptável para cada projeto. Este Menu já possui três telas: · Tela Inicial: mostrada quando é iniciado o LCD; · Tela de Data e Hora: mostra a Data e a Hora; · Tela de Ajuste: nesta tela é possível ajustar cada parâmetro individualmente: ano, mês, dia, hora, minuto, segundo. Hardware: O hardware é composto por quatro botões com pull_up interno, declarado pela programação, um LCD 16x2 com módul conversor I2C integrado, e o próprio Arduino UNO. Os botões são: · Botão MENU: Tem a função de quando em outra tela, voltar para a principal. · Botão +: Tem a função de incrementar ++. · Botão -: Tem a função de incrementar --. · Botão OK: Tem a função de confirmar alguma tela, ou configuração selecionada. Software: #include <Wire.h> #include "RTClib.h" RTC_DS1307 rtc; void inicio(); void opcao1(); void opcao2(); void opcao3(); void anos1(); void meses1(); void dias1(); void horas1(); void minutos1(); void segundos1(); void ajusteFinal(); void executar(); int anos, meses, dias, horas, minutos, segundos = 0; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; #include <LiquidCrystal_I2C.h> /* Menu simples para modificacao de acordo com sua necessidade Alterer os pinos como quiser e a quantidade de menus, basta adaptar ao seu projeto */ LiquidCrystal_I2C lcd(0x27,16,2); const int botaoMenu = 10; // Pino Botão Menu const int botaoMais = 9; // Pino Botão Aumenta const int botaoMenos = 11; // Pino Botão Diminui const int botaoOK = 12; int guardaValor = 0; int i = 0; int b = 0; int c=0; int d=0; int e=0; int f=0; int g=0; int h=0; int j=0; int contador = 0; // essa variavel vai controlar o loop do menu andando por ele opcões 0->1->2->3->0 int subContador = 0; // essa variavel vai controlar o loop do menu andando por ele opcões 0->1->2->3->0 int quantMenu = 3; // define quantas opções vão ter no menu // VOID SETUP void setup(){ lcd.init(); lcd.backlight(); pinMode(botaoMenu, INPUT_PULLUP); pinMode(botaoMais, INPUT_PULLUP); pinMode(botaoMenos, INPUT_PULLUP); pinMode(botaoOK, INPUT_PULLUP); Serial.begin(57600); if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } if (! rtc.isrunning()) { lcd.setCursor(0,0); lcd.print("RTC is NOT running!"); delay(2000); opcao3(); // following line sets the RTC to the date & time this sketch was compiled // rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); } } void loop(){ executar(); } void inicio(){ guardaValor=2; lcd.setCursor(0,0); lcd.print("Relogio Arduino "); lcd.setCursor(0,1); lcd.print("Pressione + ou -"); } void opcao1(){ lcd.setCursor(0,0); lcd.print("Acionando "); lcd.setCursor(0,1); lcd.print("Pressione OK "); guardaValor=3; //delay(520); if(digitalRead(botaoOK) == LOW){ i=true; while(i) { DateTime now = rtc.now(); lcd.clear(); lcd.setCursor(0,0); lcd.print(now.year(), DEC); lcd.print('/'); lcd.print(now.month(), DEC); lcd.print('/'); lcd.print(now.day(), DEC); lcd.setCursor(0,1); lcd.print(now.hour(), DEC); lcd.print(':'); lcd.print(now.minute(), DEC); lcd.print(':'); lcd.print(now.second(), DEC); delay(1000); if(digitalRead(botaoMenu) == LOW){ Serial.print("sair do while"); i=false; lcd.clear(); //contador = 0; } } } } void opcao2(){ lcd.setCursor(0,0); lcd.print("Ajuste "); lcd.setCursor(0,1); lcd.print("Pressione OK "); guardaValor = 4; delay(150); if(digitalRead(botaoOK) == LOW){ b=true; botaoOK==HIGH; delay(150); while(b) { lcd.setCursor(0,0); lcd.print("Botao OK Seguir "); lcd.setCursor(0,1); lcd.print("Botao Menu Sair "); if (digitalRead(botaoOK) == LOW) { delay(250); guardaValor = 1; anos1();//esta função chama todas as outras } if (digitalRead(botaoMenu) == LOW) { delay(250); guardaValor = 1; b=false; } // Fim di Switch } } } void opcao3(){ lcd.setCursor(0,0); lcd.print("opcao3"); lcd.setCursor(0,1); lcd.print("opcao3"); } void anos1(){ c=true; while(c){ lcd.setCursor(0,0); lcd.print("Anos: "); lcd.setCursor(0,1); lcd.print(anos); lcd.print(" "); if(digitalRead(botaoMais) == LOW){ delay(250); anos++; if(anos > 2099) { anos = 2015; } } if(digitalRead(botaoOK) == LOW){ delay(150); c=false; meses1(); } } } void meses1(){ d=true; while(d){ lcd.setCursor(0,0); lcd.print("Meses: "); lcd.setCursor(0,1); lcd.print(meses); lcd.print(" "); if(digitalRead(botaoMais) == LOW){ delay(250); meses++; if(meses > 12) { meses = 0; } } if(digitalRead(botaoOK) == LOW){ delay(250); d=false; dias1(); } } } void dias1(){ e=true; while(e){ lcd.setCursor(0,0); lcd.print("Dias: "); lcd.setCursor(0,1); lcd.print(dias); lcd.print(" "); if(digitalRead(botaoMais) == LOW){ delay(150); dias++; if(dias > 31) { dias = 1; } } if(digitalRead(botaoOK) == LOW){ delay(150); e=false; horas1(); } }} void horas1(){ f=true; while(f){ lcd.setCursor(0,0); lcd.print("Horas: "); lcd.setCursor(0,1); lcd.print(horas); lcd.print(" "); if(digitalRead(botaoMais) == LOW){ delay(150); horas++; if(horas > 23) { horas = 0; } } if(digitalRead(botaoOK) == LOW){ delay(150); f=false; minutos1(); } }} void minutos1(){ g=true; while(g){ lcd.setCursor(0,0); lcd.print("Minutos: "); lcd.setCursor(0,1); lcd.print(minutos); lcd.print(" "); if(digitalRead(botaoMais) == LOW){ delay(150); minutos++; if(minutos > 59) { minutos = 0; } } if(digitalRead(botaoOK) == LOW){ delay(150); g=false; segundos1(); } }} void segundos1(){ h=true; while(h){ lcd.setCursor(0,0); lcd.print("Segundos: "); lcd.setCursor(0,1); lcd.print(segundos); lcd.print(" "); if(digitalRead(botaoMais) == LOW){ delay(150); segundos++; if(segundos > 59) { segundos = 0; } } if(digitalRead(botaoOK) == LOW){ delay(150); h=false; ajusteFinal(); } }} void ajusteFinal(){ j=true; while(j){ if(digitalRead(botaoOK) == LOW){ delay(150); DateTime now = rtc.now(); rtc.adjust(DateTime(anos, meses, dias, horas, minutos, segundos)); lcd.setCursor(0,0); lcd.print("Hora ajustada! "); delay(500); j=false; b=false; //executar(); // contador=0; } } } void executar(){ DateTime now = rtc.now(); anos = (now.year()); meses= (now.month()); dias= (now.day()); horas= (now.hour()); minutos= (now.minute()); segundos = (now.second()); // aqui controla a opcão do menu cada vez que for apertado o botao menu é acrescentado +1 na variavel fazendo switch abaixo percorrer as opções if (digitalRead(botaoMais) == LOW) { delay(250); guardaValor = 1; contador=contador+1; } if (contador>quantMenu){ // se a quantidade for maior que o selecionado na variavel, ele volta ao 0 contador=0; } if (digitalRead(botaoMenos) == LOW) { delay(250); guardaValor = 1; contador=contador-1; } if (contador<0){ // se a quantidade for maior que o selecionado na variavel, ele volta ao 0 contador=quantMenu; } // switch de opções para controle do manu switch(contador){ case 0: inicio(); break; case 1: opcao1(); break; case 2: opcao2(); break; case 3: opcao3(); break; } // Fim di Switch delay(250); } O código está um pouco bagunçado e sem muitos comentários. Este skecht é para ajuste de hora e data por hardware.
  2. Olá. Estou para contratar um plano de internet. E gostaria de saber se tem como conectar um segundo roteador no modem da provedora para criar uma segunda rede de wifi para somente visitantes. Desda já agradeço pela atenção.
  3. @Isadora Ferraz Obrigado pela sugestão.
  4. @Isadora Ferraz Obrigado pelos dois posts. Achei uma solução na internet: String ola, oi; int x = 45; int y = 50; int result; void setup() { lcd.init(); // Inicia o Display lcd.backlight(); // Inicia o Backlight ola.concat(x); ola.concat(y); lcd.cursorBlink(); lcd.setCursor(0,0); lcd.print("Concatenacao"); lcd.setCursor(0,1); lcd.print(ola); delay(7000); //união concatenar result = ola.toInt() + 60 ; lcd.setCursor(0,0); lcd.print("Calculo "); lcd.setCursor(0,1); lcd.print(result); delay(7000); } Uso para concatenar o concat e depois converto a string para int por meio do toInt.
  5. Olá. Tenho uma dúvida: como fazer concatenação de duas variaveis int, como por exemplo: int x = 45; int y = 54; CONCATENAR x e y: z= 4554
  6. Tenho uma dúvida: como fazer concatenação de duas variaveis int, como por exemplo: int x = 45; int y = 54; CONCATENAR x e y: z= 4554
  7. Olá. Estou programando Um RTC DS1307 com arduino UNO, para calcular a soma de datas. Veja o código que deu certo: // Funções de data e hora usando um DS1307 RTC conectado via I2C e Wire lib #include <Wire.h> #include "RTClib.h" RTC_DS1307 rtc; char daysOfTheWeek[7][12] = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"}; void setup () { while (!Serial); // para Leonardo / Micro / Zero Serial.begin(57600); if (! rtc.begin()) { Serial.println("Não foi possível encontrar o RTC! Verifique a conexão I2C."); while (1); } if (! rtc.isrunning()) { Serial.println("O RTC NÃO está sendo executado! Verifique a conexão da alimentação."); // a linha a seguir define o RTC para a data e hora em que este esboço foi compilado //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Esta linha define o RTC com uma data e hora explícitas, por exemplo, para definir // 21 de janeiro de 2014 às 03:00, você chamaria: //rtc.adjust(DateTime(2020, 7, 14, 14, 27, 0)); } } void loop () { mostraData(); mostraDiaSemana(); mostraHorario(); calculoSeg1970(); calculoFuturo(2, 1, 5, 10);//dia, hora, minuto, segundo delay(6000); } void mostraData(){ DateTime now = rtc.now(); Serial.print(now.day(), DEC); // Dia Serial.print('/'); // BARRA Serial.print(now.month(), DEC); // Mês Serial.print('/'); // BARRA Serial.println(now.year(), DEC); // Ano } void mostraDiaSemana(){ DateTime now = rtc.now(); Serial.println(daysOfTheWeek[now.dayOfTheWeek()]); } void mostraHorario(){ DateTime now = rtc.now(); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); } void calculoSeg1970(){ DateTime now = rtc.now(); // Calculo Segundos e Dias desde 1/1/1970 Serial.print("Desde meia-noite de 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print(" segundos = "); Serial.print(now.unixtime() / 86400L); Serial.println(" dias"); } void calculoFuturo(int Ndia, int Nhora, int Nminuto, int Nsegundo){ DateTime now = rtc.now(); // calcular uma data que é de 7 dias e 30 segundos no futuro DateTime future (now + TimeSpan(Ndia,Nhora,Nminuto,Nsegundo)); Serial.print("Agora + "); Serial.print(Ndia); Serial.print(" dias + "); Serial.print(Nhora); Serial.print(" horas + "); Serial.print(Nminuto); Serial.print(" minutos + "); Serial.print(Nsegundo); Serial.print(" segundos: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); } Agora, quero implementar ao código, especificamente na ultima função calculoFuturo: void calculoFuturo(int Ndia, int Nhora, int Nminuto, int Nsegundo){ DateTime now = rtc.now(); // calcular uma data no formato dia, hora, minuto e segundo DateTime future (now + TimeSpan(Ndia,Nhora,Nminuto,Nsegundo)); Serial.print("Agora + "); Serial.print(Ndia); Serial.print(" dias + "); Serial.print(Nhora); Serial.print(" horas + "); Serial.print(Nminuto); Serial.print(" minutos + "); Serial.print(Nsegundo); Serial.print(" segundos: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); } Quero que, quando um botão( 'botao seleciona'') for clicado, vá inclementando de 0 a 9 para que quando o valor desejado estiver correto, com outro botão('botao OK') o arduino mande este número para a variavel, por exemplo, Ndia. Tambem queria com um terceiro botão para selecionar se quero uma destas variaveis: Ndia,Nhora,Nminuto,Nsegundo. Estero que tenham compreendido. Desde já agradeço.
  8. Olá. Fiz um código para verificar temperatura ambiente. Para deixar a leitura mais precisa utilizei um DHT11 e um termistor NTC e com as leituras tirei a média de temperatura. Queria saber se eu tirando a média de temperatura ( Soma dos valores e divide por 2[nº de sensores] a a leitura fica realmente mais precisa ou se a leitura está completamente errada.Segue o código: Nota: Utilizei como microcontrolador o Arduino UNO. // Example testing sketch for various DHT humidity/temperature sensors // Written by ladyada, public domain // REQUIRES the following Arduino libraries: // - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library // - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor #include "DHT.h" #define Vin 4.88 // define constante igual a 5.0 #define T0 298.15 // define constante igual a 298.15 Kelvin #define Rt 10000 // Resistor do divisor de tensão #define R0 10000 // Valor da resistencia inicial do NTC #define T1 273.15 // [K] in datasheet 0º C #define T2 373.15 // [K] in datasheet 100° C #define RT1 35563 // [ohms] resistencia in T1 #define RT2 549 // [ohms] resistencia in T2 float beta = 0.0; // parametros iniciais [K] float Rinf = 0.0; // parametros iniciais [ohm] float TempKelvin = 0.0; // variable output float TempCelsius = 0.0; // variable output float Vout = 0.0; // Vout in A0 float Rout = 0.0; // Rout in A0 #define DHTPIN A1 // Digital pin connected to the DHT sensor // Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 -- // Pin 15 can work but DHT must be disconnected during program upload. // Uncomment whatever type you're using! #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Connect pin 1 (on the left) of the sensor to +5V // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 // to 3.3V instead of 5V! // Connect pin 2 of the sensor to whatever your DHTPIN is // Connect pin 4 (on the right) of the sensor to GROUND // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor // Initialize DHT sensor. // Note that older versions of this library took an optional third parameter to // tweak the timings for faster processors. This parameter is no longer needed // as the current DHT reading algorithm adjusts itself to work on faster procs. DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println(F("Testando DHT11")); beta = (log(RT1 / RT2)) / ((1 / T1) - (1 / T2)); // calculo de beta Rinf = R0 * exp(-beta / T0); // calculo de Rinf dht.begin(); Serial.println("--------------"); Serial.println(" "); } void loop() { // Wait a few seconds between measurements. delay(2000); Vout = Vin * ((float)(analogRead(0)) / 1024.0); // calculo de V0 e leitura de A0 Rout = (Rt * Vout / (Vin - Vout)); // calculo de Rout TempKelvin = (beta / log(Rout / Rinf)); // calculo da temp. em Kelvins TempCelsius = TempKelvin - 273.15; // calculo da temp. em Celsius // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) //float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) ) { Serial.println(F("Falha na leitura do sensor de temperatura DHT11")); return; } // Compute heat index in Fahrenheit (the default) //float hif = dht.computeHeatIndex(f, h); // Compute heat index in Celsius (isFahreheit = false) //float hic = dht.computeHeatIndex(t, h, false); float mediaT = ((t+TempCelsius)/2); Serial.print(F("Humidity: ")); Serial.println(h); Serial.print(F("Temperatura_DHT: ")); Serial.println(t); Serial.print("Temperatura_NTC:"); // imprime no monitor serial Serial.println(TempCelsius); // imprime temperatura Celsius Serial.println("--------------"); Serial.print("Média_Temperatura"); Serial.println(mediaT); Serial.println("--------------"); Serial.println(" "); }
  9. Olá. Sou iniciante em programação e Gostaria de acrescentar alguns elementos à uma página WEB do meu minimodem, como interromper a conexão da internet de acordo com a taxa máxima de dados determinados pelo usuário. Veja a página atual: Qualquer dúvida estou à disposição.
  10. Olá. Sou iniciante em programação e queri fazer um programa o controle de não exceder os limites de largura de banda especificada, como por exemplo: * Se eu especificar como 100 MB de internet como limite máximo, o programa irá desligar a conexão com a internet. Seria igual ao programa 'NetWorx': "NetWorx é uma ferramenta simples, livre e poderosa que ajuda a avaliar objetivamente a sua situação largura de banda. Ele pode garantir que você não exceder os limites de largura de banda especificada pelo ISP, ajudar a identificar fontes de problemas de rede e ajudar a monitorar atividades suspeitas na rede. "
  11. Olá. Sou iniciante no mundo da programação e tenho o interesse de fazer um programa de linguagem C# pelo Microsoft Visual Studio 2019 para controle de dados de internet pelo meu mini-Modem( usado com um chip SIM). Queria que quando atingisse uma certa quantidade de internet, por exemplo 200 MB, a conexão com a internet seria cortada. Estou a disposição para qualquer dúvida. Meu Mini-Modem: Informações Do Dispositivo: Nome do dispositivo: E3272 Versão do hardware:CH1E3272SM Versão do software:22.470.07.00.199 Versão da UI web:13.100.10.00.199 Meu Sistema Operacional: Windows 7 Ultimate 64 bits
  12. Olá. Gostaria de saber se tem como programar o microcontrolador Arduino UNO com a linguagem brasileira Lua. Se sim, qual programa devo usar?
  13. Tambem tive esse problema. Fiz isso: Digitei isso no Windows Explorer C:\Users\xxxxx\AppData\Local\Arduino15 No lugar do xxxxx colocar o nome do usuario. Apaguei arquivo package_index.json
  14. @Eder Neumann Isso. Para se ter 2 controles. adicionado 0 minutos depois @Eder Neumann Isso. Para se ter 2 controles, um da TV e outro para imita-lo. adicionado 4 minutos depois @Isadora Ferraz é que o problema é que o arduino só recepciona dados quando o botão é apertado. Eu coloquei o que você falou //... if (results.value == 0x2FD807F) emissorIR.sendRaw(o_que,você,_quiser); E o compilador mostrou: exit status 1 'results' was not declared in this scope
  15. Olá. - De Novo - Montei o projeto do vídeo do meu ultimo tópico: 'Emitir sinal hexadecimal emissor IR arduino' link:https://www.clubedohardware.com.br/forums/topic/1456878-emitir-sinal-hexadecimal-emissor-ir-arduino/?do=findComment&comment=7819680 Deu tudo certo: o arduino controla a minha TV. Agora eu queria que eu apertasse um botão de outro controle remoto(não é da TV) para o arduino, o arduino recepcionasse e enviasse para o LED Infravermelho um determinado código. O código que eu usei foi esse: // INCLUSÃO DE BIBLIOTECA #include <IRremote.h> #include <PushButton.h> // DIRETIVAS DE COMPILAÇÃO #define tempoTecla 350 #define frequencia 38 // kHz // DEFINIÇÃO DOS PINOS #define pinReceptor 11 #define pinBot1 8 #define pinLed 12 // INSTANCIANDO OBJETOS IRrecv receptorIR(pinReceptor); IRsend emissorIR; PushButton botaoLeitura(pinBot1); // DECLARAÇÃO VARIÁVEIS GLOBAIS bool lerComando = false; // DECLARAÇÃO DAS FUNÇÕES DE LEITURA void ircode (decode_results *results); void encoding (decode_results *results); void dumpInfo (decode_results *results); void dumpRaw (decode_results *results); void dumpCode (decode_results *results); // DECLARAÇÃO DAS TECLAS CLONADAS unsigned int teclaD[] = {9050,4400, 650,500, 600,500, 600,500, 650,500, 600,550, 600,450, 650,500, 650,500, 600,1600, 600,1650, 600,1550, 650,1600, 600,1600, 650,1600, 600,1600, 600,1600, 600,550, 600,1600, 600,1600, 600,1600, 650,500, 600,500, 650,500, 600,500, 600,1600, 650,500, 600,500, 650,500, 600,1600, 600,1600, 650,1550, 650,1600, 600}; unsigned int teclaJ[] = {9050,4350, 650,450, 700,450, 650,500, 650,450, 650,450, 700,450, 650,450, 700,450, 650,1550, 650,1550, 700,1500, 700,1550, 650,1550, 700,1500, 700,1550, 650,1550, 700,400, 700,1550, 650,1550, 700,400, 700,450, 700,400, 700,450, 650,450, 700,1500, 700,450, 700,400, 700,1550, 650,1550, 700,1500, 700,1500, 700,1550, 700}; unsigned int teclaL[] = {9000,4450, 550,550, 600,500, 600,550, 600,550, 550,550, 600,500, 600,550, 600,550, 550,1600, 650,1600, 600,1550, 650,1550, 700,1550, 650,1600, 650,1550, 650,1550, 650,500, 650,1550, 650,500, 600,1600, 600,1600, 600,500, 650,1600, 600,500, 600,1650, 550,550, 600,1650, 550,550, 600,500, 600,1650, 550,550, 600,1600, 600}; unsigned int teclaN[] = {9000,4450, 600,550, 550,600, 550,550, 550,600, 500,600, 550,600, 500,600, 550,600, 500,1700, 550,1650, 550,1650, 550,1700, 550,1650, 550,1650, 600,1600, 600,1650, 550,1650, 600,1650, 550,500, 600,1650, 600,1600, 600,500, 650,500, 600,500, 600,550, 600,500, 600,1600, 650,500, 600,500, 600,1600, 650,1600, 600,1600, 600}; unsigned int teclaM[] = {9000,4450, 600,500, 600,500, 600,500, 650,550, 550,500, 650,500, 600,550, 600,500, 600,1600, 600,1600, 650,1600, 600,1600, 600,1600, 650,1550, 650,1600, 600,1600, 650,500, 600,1600, 600,1600, 650,500, 600,1600, 600,500, 650,500, 600,500, 600,1650, 600,450, 650,500, 650,1550, 650,500, 600,1600, 650,1600, 600,1600, 600}; void setup() { Serial.begin(9600); pinMode(pinLed, OUTPUT); // INICIANDO RECEPTOR IR receptorIR.enableIRIn(); Serial.println("Setup Concluído"); Serial.println("Digite d para informações"); Serial.println("Digite j para subir canal"); Serial.println("Digite l para diminuir volume"); Serial.println("Digite n aumentar volume"); Serial.println("Digite m para descer canal"); Serial.println(" "); } void loop() { // MÉTODO PARA LEITURA E ATUALIZAÇÃO DAS PROPRIEDADES DO BOTÃO botaoLeitura.button_loop(); // BLOCO CONDIÇÕES PARA INICIAR LEITURA if (botaoLeitura.pressed() && !lerComando) { lerComando = true; digitalWrite(pinLed, HIGH); } else if (botaoLeitura.pressed() && lerComando) { lerComando = false; digitalWrite(pinLed, LOW); } // LAÇO PARA LEITURA DO RECEPTOR IR QUANDO FOR PRESSIONADO O BOTÃO while (lerComando) { decode_results results; if (receptorIR.decode(&results)) { ircode (&results); encoding (&results); dumpInfo (&results); dumpRaw (&results); dumpCode (&results); receptorIR.resume(); lerComando = false; digitalWrite(pinLed, LOW); } } // BLOCO PARA RECEBER DADOS DA SERIAL E INICIAR EMISSOR IR if (Serial.available()) { char tecla = Serial.read(); switch (tecla) { case 'd': emissorIR.sendRaw(teclaD, sizeof(teclaD) / sizeof(teclaD[0]), frequencia); Serial.println("Enviando Tecla D clonada"); delay(tempoTecla); break; case 'j': emissorIR.sendRaw(teclaJ, sizeof(teclaJ) / sizeof(teclaJ[0]), frequencia); Serial.println("Enviando Tecla J clonada"); delay(tempoTecla); break; case 'l': emissorIR.sendRaw(teclaL, sizeof(teclaL) / sizeof(teclaL[0]), frequencia); Serial.println("Enviando Tecla L clonada"); delay(tempoTecla); break; case 'n': emissorIR.sendRaw(teclaN, sizeof(teclaN) / sizeof(teclaN[0]), frequencia); Serial.println("Enviando Tecla N clonada"); delay(tempoTecla); break; case 'm': emissorIR.sendRaw(teclaM, sizeof(teclaM) / sizeof(teclaM[0]), frequencia); Serial.println("Enviando Tecla M clonada"); delay(tempoTecla); break; } } } Circuito: Códigos do Controle que quero usar ( não o controle da TV): NOTA: Só são necessários 5 botões; Botão POWER Code : 2FD807F (32 bits) unsigned int rawData[67] = {8900,4450, 550,550, 550,550, 550,550, 550,550, 550,550, 550,550, 550,1700, 550,550, 550,1650, 550,1650, 550,1650, 600,1650, 550,1650, 550,1650, 600,500, 600,1600, 600,1650, 550,550, 550,550, 550,550, 600,500, 550,550, 600,550, 550,550, 550,500, 650,1600, 600,1600, 600,1600, 650,1600, 550,1650, 650,1550, 650,1550, 650}; Botão MUTE Code : 2FD00FF (32 bits) unsigned int rawData[67] = {8900,4450, 550,550, 600,500, 600,500, 600,550, 550,500, 600,550, 550,1650, 550,550, 550,1650, 600,1650, 550,1600, 600,1650, 550,1700, 500,1700, 550,550, 550,1650, 550,550, 550,550, 550,550, 600,550, 600,500, 500,600, 550,550, 600,500, 550,1650, 600,1650, 550,1650, 550,1650, 600,1600, 600,1650, 600,1600, 550,1650, 550}; Botão Menu▲ Code : 2FD40BF (32 bits) unsigned int rawData[67] = {8900,4450, 600,500, 550,600, 550,550, 550,550, 550,550, 550,550, 600,1600, 550,550, 600,1650, 550,1650, 600,1600, 600,1600, 550,1650, 600,1650, 550,500, 600,1650, 550,550, 650,1550, 550,550, 600,500, 650,500, 550,550, 550,550, 650,450, 600,1600, 650,500, 550,1650, 600,1600, 550,1650, 600,1600, 650,1600, 550,1650, 650}; Botão VOL► Code : 2FDA05F (32 bits) unsigned int rawData[67] = {8900,4450, 550,550, 600,500, 600,500, 600,500, 650,500, 550,500, 600,1650, 600,500, 650,1550, 600,1600, 650,1550, 650,1550, 650,1600, 650,1550, 600,500, 650,1600, 600,1600, 550,550, 600,1600, 600,500, 600,550, 600,450, 650,500, 600,500, 650,450, 600,1600, 650,450, 600,1650, 600,1550, 700,1550, 650,1600, 550,1600, 650}; Botão MENU▼ Code : 2FD609F (32 bits) unsigned int rawData[67] = {9000,4400, 600,500, 550,550, 600,550, 550,550, 550,550, 550,550, 600,1600, 600,500, 550,1650, 600,1650, 550,1650, 550,1650, 600,1600, 600,1600, 600,500, 600,1650, 600,500, 600,1600, 650,1600, 600,450, 650,450, 600,500, 650,500, 600,500, 600,1650, 550,500, 650,450, 650,1600, 600,1600, 600,1600, 600,1600, 650,1600, 600}; Botão VOL◄ Code : 2FDC03F (32 bits) unsigned int rawData[67] = {8950,4450, 550,500, 600,500, 600,550, 600,450, 600,550, 550,550, 600,1600, 600,550, 550,1600, 650,1600, 600,1600, 600,1600, 650,1550, 650,1600, 550,550, 600,1600, 600,1650, 600,1550, 600,550, 650,450, 600,500, 600,500, 650,450, 600,500, 600,500, 650,500, 600,1600, 600,1600, 600,1650, 550,1650, 600,1550, 600,1650, 600}; Botão MENU (Central) Code : 2FD20DF (32 bits) unsigned int rawData[67] = {8950,4450, 550,500, 650,500, 600,500, 550,550, 600,500, 650,450, 600,1600, 650,450, 600,1650, 600,1600, 600,1600, 600,1650, 600,1550, 650,1550, 650,500, 650,1550, 650,450, 600,550, 600,1550, 650,500, 600,500, 600,500, 650,450, 600,500, 650,1600, 600,1600, 600,500, 600,1600, 600,1600, 650,1600, 600,1600, 650,1550, 600};
  16. @Isadora Ferraz Deu certo. Valeu. Agora o código ficou assim: #include <Wire.h> //INCLUSÃO DE BIBLIOTECA #include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); //ENDEREÇO DO I2C E DEMAIS INFORMAÇÕES #include <IRremote.h> // Biblioteca IRemote int RECV_PIN = 11; // Arduino pino D11 conectado no Receptor IR IRrecv irrecv(RECV_PIN); // criando a instância decode_results results; // declarando os resultados boolean estado; void setup(){ Serial.begin(9600); lcd.begin (16,2); //SETA A QUANTIDADE DE COLUNAS(16) E O NÚMERO DE LINHAS(2) DO DISPLAY irrecv.enableIRIn(); // Inicializa a recepção de códigos } void loop() { results.value = 0; if (irrecv.decode(&results)) // se algum código for recebido { Serial.println(results.value, HEX); // imprime o HEX Code irrecv.resume(); // reinicializa o receptor } if (results.value == 0x2FD807F) estado^=1;{//POWER lcd.setBacklight(estado); } }
  17. Olá. Achei um vídeo que mostra exatamente o que eu quero: EDITADO EM 09/06/2020: Fui fazer o que estava no vídeo e ficou faltando no código a parte onde é posto o led infravermelho. Então fui pesquisar de novo e achei este outro video em que TESTEI o código e deu certo:
  18. Olá. Tive a ideia de controlar se o LCD liga ou não o backlight por um controle remoto. Meu LCD está junto de um conversor I2C. Fiz as ligações carreguei o código e o LCD ligou. Apertei ao botão do controle remoto e o backlight do LCD acendeu mas ao apertar novamente para a luz do LCD desligar não aconteceu nada. O código está abaixo: #include <Wire.h> //INCLUSÃO DE BIBLIOTECA #include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); //ENDEREÇO DO I2C E DEMAIS INFORMAÇÕES #include <IRremote.h> // Biblioteca IRemote int RECV_PIN = 11; // Arduino pino D11 conectado no Receptor IR IRrecv irrecv(RECV_PIN); // criando a instância decode_results results; // declarando os resultados int funcaoa = 0; // valor instantaneo enviado pelo botão int funcaob = 0; // valor guardado int botao = 0; int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW) void setup(){ Serial.begin(9600); lcd.begin (16,2); //SETA A QUANTIDADE DE COLUNAS(16) E O NÚMERO DE LINHAS(2) DO DISPLAY irrecv.enableIRIn(); // Inicializa a recepção de códigos } void loop(){ results.value = 0; if (irrecv.decode(&results)) // se algum código for recebido { Serial.println(results.value, HEX); // imprime o HEX Code irrecv.resume(); // reinicializa o receptor } funcaoa= botao; // ler o valor enviado pelo botão: "HIGH" ou "LOW" if (results.value == 0x2FD807F) //POWER { botao = HIGH; } if ((funcaoa == HIGH) && (funcaob == LOW)) { estado = 1 - estado; delay(500); // } funcaob=funcaoa; if (estado == 1) { lcd.setBacklight(HIGH); //LIGA O BACKLIGHT (LUZ DE FUNDO) } else { lcd.setBacklight(LOW); //LIGA O BACKLIGHT (LUZ DE FUNDO) } }
  19. lá. Tenho um projeto de controlar a TV minha com o arduino. Já Pesquisei e vi programas para mostrar o código hexadecimal com arduino. Fiz isso. Veja: 1) FF9A65 2) FF9867 3) FFB24D 4) FF708F 5) FFB04F 6) FF8A75 7) FF48B7 8- FF8877 9) FFA25D 10) FF609F Agora queria um código para a IDE arduino para o arduino emitir esses códigos com um LED infravermelho. Só que até agora minhas pesquisas não me mostraram isso. Se vcs pudessem me ajudar.
  20. Montei um projeto para controlar o led 13 d arduino por bluetooth. O divisor de tensão para o pino RX do módulo eu utilizei 1 resistor de 10K ohms + 2 resistores em serie de 10K ohms cada para resultar em 20 K ohms. R1 = 10K R2 = 10K + 10K V0 = saida Vi = entrada = 5v (10 + 10) / 10 + (10 + 10) * 5 20/10+20 *5 20/30 *5 0,6666666666666667 *5 3,333333333333333 Volts Veja o video:
  21. Olá. Tenho um módulo Bluetooth HC-05 e queria liga-lo no arduino. Mas é preciso criar um divisor de tensão para abaixar a tensão de 5 volts para 3,3 volts. Para isso é necessário resistores. Tenho somente resistores de 10 K ohms; resistores de 330 ohms ; e resistores de 1 K ohms.
  22. Consegui!! Mandei Formatar meu PC para windows 7 e deu certo agora PC reconhece Arduino e Consigo gravar códigos no arduino. Obrigado pelas ajudas e desculpas pela demora para responder. Valeu.
  23. @Blumer Celta O arduino não é original. Comprei na eletrogate junto de um kit. O arduino é o da versão UNO. Veja a foto do chip conversor serial: é o atmel MEGA16U2 PH A272NB Meu Windows 7 de 32 bits
  24. @Eder Neumann Então, há 75 atualizações importantes para atualizar, mas como o meu windows não é original não sei se é uma boa ideia realizar a atualização. @Isadora Ferraz Eu coloquei em outra USB ( antes estava conectado em uma extensão USB), apaguei os drivers das instalações automáticas, entrei pela conta de administrador e coloquei o driver manualmente da pasta drivers da IDE arduino e então apareceu a seguinte mensagem: Queria saber se não dá pra abaixar o arquivo arduino.inf para instalar.
  25. @Eder Neumann Eu fiz o processo descrito no site que você indicou: "Instale os drivers da placa Se você usou o Instalador, o Windows - do XP até 10 - instalará os drivers automaticamente assim que você conectar sua placa. Se você baixou e expandiu o pacote Zip ou, por algum motivo, o quadro não foi reconhecido corretamente, siga o procedimento abaixo. Clique no menu Iniciar e abra o painel de controle. Enquanto estiver no Painel de Controle, navegue para Sistema e Segurança. Em seguida, clique em Sistema. Quando a janela Sistema aparecer, abra o Gerenciador de dispositivos. Procure em portas (COM e LPT). Você deverá ver uma porta aberta denominada "Arduino UNO ( COMxx )". Se não houver uma seção COM & LPT, procure em "Outros dispositivos" para "Dispositivo desconhecido". Clique com o botão direito do mouse na porta "Arduino UNO ( COmxx )" e escolha a opção "Atualizar driver". Em seguida, escolha a opção "Procurar no meu computador pelo driver". Por fim, navegue e selecione o arquivo do driver chamado "arduino.inf" , localizado na pasta "Drivers" do download do software Arduino (não no subdiretório "FTDI USB Drivers"). Se você estiver usando uma versão antiga do IDE (1.0.3 ou anterior), escolha o arquivo de driver Uno chamado "Arduino UNO.inf" O Windows concluirá a instalação do driver a partir daí." Mas ao realizar isto, windows retornou a seguinte mensagem: Nota: Ao ir em C:\Program Files\Arduino\drivers, eu visualizo o arquivo arduino.inf, o que quer dizer que ele existe.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!