+ Responder ao Tópico
Resultados 1 a 4 de 4

Tópico: Contador digital com arduino

  1. #1
    Jogador de Kinect Adventures (2010) manoelneto É um desconhecido no momento
    Data de Ingresso
    04/2019
    Posts
    7
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Reputação
    0

    Contador digital com arduino

    Fala galera beleza vim aqui trazer meu contador digital feito em arduino
    Ele vai de 0 a 255 registro pois o arduino nao aceira mais que esse valor em sua eeprom
    pois mesmo se desligar o mesmo ainda continua de onde parou
    segue o codigo abaixo para suas adaptaçoes

    deixei o pino pino 7 como ledPin para uso de foto optoacoplador para fechar contato com o fio {terra (GND)} e {positivo (SINAL LOGICO)} do botão coin do jamma ou do controle Joystick.

    fiquem avontade para suas adptações.


    ScreenShot

    Spoiler!



    Código:
    
    /******************************************************************\
    ***                                                              ***
    **       CRIADO POR MANOEL ANDREADE   NICK [ FANTOSHI ]           **
    **     CONTADOR DE COINS DIGITAL COM ARDUINO PARA MULTiJOGOS      **
    ***                                                              *** 
    *******************************************************************/
    
    // --- Bibliotecas Auxiliares ------------------------
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <EEPROM.h>
    //---- CONFIGURAÇÃO DO DISPLAY COM I2C ---------------
    LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
    //---- MAPEAMENTO DE PINOS ---------------------------
    int   ledPin            = 7;       
    int   switchPin         = 2;
    //---- VARIAVEI GLOBAIS ------------------------------    
    int   counter;
    int   currentState; 
    int   lastState;
    int   buttonState;     
    int   addr              = 0x00;
    int   tCoins            = EEPROM.read(addr) - 1;
    unsigned long lastDebounceTime = 0;
    unsigned long debounceDelay = 50;    
    //--- SETUP DE INICIALIZAÇÃO --------------------------
    void setup() {
      Serial.begin(9600);
      pinMode(switchPin, INPUT_PULLUP);
      pinMode(ledPin, OUTPUT);
      lcd.begin (16,4);
      lcd.clear();
      lcd.setBacklight(HIGH);
      lcd.setCursor(0,0);
      lcd.print("CARREGANDO ...");
      delay(1000);
      lcd.setCursor(2,1);
      lcd.print("ARCADEBR.COM");
      delay(2000);
      lcd.clear();
    }
    //---- LOOP INFINITO DO PROGRAMA ----------------------
    void loop() {
      int currentState = digitalRead(switchPin);
          lcd.setCursor(0,1);                 
          lcd.print("Total:");             
          lcd.setCursor(7,1);
          lcd.print(tCoins);
      if (currentState != lastState) {
          lastDebounceTime = millis();
      }
      if ((millis() - lastDebounceTime) > debounceDelay) {
        if (currentState != buttonState) {
          buttonState = currentState;
          if (currentState == HIGH) {
            counter++;
            digitalWrite(ledPin, HIGH);
            digitalWrite(ledPin, LOW);
            tCoins++;
            if (tCoins == 255 ){
                counter =0;
                tCoins =0;
              }else{
                EEPROM.write(addr, tCoins);  
              }
            lcd.clear();
            lcd.setCursor(2,0);
            lcd.print("FLIPERAMA 01");
         }  
        }
      }
      lastState = currentState;  
    }
    //----------------------------------------------------

  2. #2
    Jogador de God of War (2005) fricgo Se tornará famoso em breve fricgo Se tornará famoso em breve Avatar de fricgo
    Data de Ingresso
    06/2015
    Localização
    Sorocaba/Sp
    Posts
    73
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)
    Reputação
    35

    Re: Contador digital com arduino

    Ele vai de 0 a 255 registro pois o arduino nao aceira mais que esse valor em sua eeprom
    realmente cada endereço da eeprom só vai até 255, porém é só usar dois endereços pra salvar um inteiro.
    Da pra resolver isso amigo, você deve dividir o número inteiro em duas partes e salvar cada parte do inteiro em um endereço de memória.

  3. #3
    Jogador de Kinect Adventures (2010) manoelneto É um desconhecido no momento
    Data de Ingresso
    04/2019
    Posts
    7
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Reputação
    0

    Re: Contador digital com arduino

    Citação Postado originalmente por fricgo Ver Post
    realmente cada endereço da eeprom só vai até 255, porém é só usar dois endereços pra salvar um inteiro.
    Da pra resolver isso amigo, você deve dividir o número inteiro em duas partes e salvar cada parte do inteiro em um endereço de memória.

    Correto mas a memória eepron do arduino tem um total aproximado de 100.000 ciclos então deve ser usada com cuidado o meu projeto ja está salvando em um cartão SD para resolver isso. E também já tem escolha para colocar 1 sinal 2 pulsos ou a quantidade desejada dei só uma luz para quem quiser fazer alterações

    Futuramente eu irei liberar a versão full

    Configurável via terminal MS DOS ( podendo ser controlador pelo advmenu )
    Display de 7 seguimentos auxiliar igual as fliperamas SNK .
    Dados de configurações salvos em um cartão micro SD
    COIN PLAYER 1 E PLAYER 2

  4. #4
    Jogador de Kinect Adventures (2010) manoelneto É um desconhecido no momento
    Data de Ingresso
    04/2019
    Posts
    7
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Reputação
    0

    Post Re: Contador digital com arduino

    Bom nao consegui editar o post mas ai vai uma atualizaçao do meu skecth arduino
    fiquem avontade para usar agora o contado vai ate [ 9999 ] o mesmo esta otimo para o uso de todos

    Código:
    
    /******************************************************************\
    ***                                                              ***
    **       CRIADO POR MANOEL ANDREADE   NICK [ FANTOSHI ]           **
    **     CONTADOR DE COINS DIGITAL COM ARDUINO PARA MULTiJOGOS      **
    **                           V 1.05                                **
    ***                                                              ***
    *******************************************************************/
    // --- BIBLIOTECAS AUXILIARES ------------------------
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <EEPROM.h>
    //---- CONFIGURAÇÃO DO DISPLAY COM I2C ---------------
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // SDA PINO A4 SCL PINA A5
    //---- MAPEAMENTO DE PINOS ---------------------------
    int   switchPin         = 2;                                    // PINO DO BOTAO INSET
    int   coinPin           = 6;                                    // PINO PWM INSERIR COIN
    int   beepPin           = 9;                                    // PINO DO BUZZER
    //---- DECLARAÇÃO DE FUNÇÕES --------------------------
    void beep();
    void exibirLcd();
    void insertCoin();
    //---- LEITURA INICIAL DA EEPROM ----------------------
    int lerInt(int ende1, int ende2) {
      int valor = 0; 
      byte primeiroByte = EEPROM.read(ende1);
      byte segundoByte = EEPROM.read(ende2);
      valor = (segundoByte << 8) + primeiroByte;
      return valor; // Retornamos o valor da leitura
    }
    //---- VARIAVEI GLOBAIS ------------------------------
    int   counter = lerInt(1, 2);
    int   currentState;
    int   lastState;
    int   buttonState;
    int   addr              = 0xff;                                 // ENDEREÇO INICIAL DA EEPRON
    int   tCount            = 9999;                                // LER A EERPON E SALVA O VALOR EM UMA VARIAVEL
    //---- VARIAVEI DEBOUNCE ------------------------------
    unsigned long lastDebounceTime = 0;
    unsigned long debounceDelay = 40;
    //--- SETUP DE INICIALIZAÇÃO --------------------------
    void setup() {
      Serial.begin(9600);
      pinMode(switchPin, INPUT_PULLUP);
      pinMode(coinPin, OUTPUT);
      pinMode(beepPin, OUTPUT);
    
      lcd.begin (16, 4);
      lcd.clear();
      lcd.setBacklight(HIGH);
      lcd.setCursor(0, 0);
      lcd.print("***CARREGANDO***");
      delay(1000);
      lcd.setCursor(0, 1);
      lcd.print("--ARCADEBR.COM--");
      delay(1000);
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("CONTADOR DIGITAL");
      lcd.setCursor(0, 1);
      lcd.print("-----V 1.05-----");
      delay(2000);
      lcd.clear();
      beep();
      delay(200);
      beep();
    }
    //---- LOOP INFINITO DO PROGRAMA ----------------------
    void loop() {
    
      exibirLcd();
    
      int currentState = digitalRead(switchPin);
    
      if (currentState != lastState) {
        lastDebounceTime = millis();
      }
    
      if ((millis() - lastDebounceTime) > debounceDelay) {
        if (currentState != buttonState) {
          buttonState = currentState;
          if (currentState == LOW) {
            counter++;
            beep();
            lcd.clear();
            escreveInt(1, 2, counter);
            if ( counter >= tCount ) {
              counter = 0;
              //tCoins = 0;
    
            } else {
              escreveInt(addr, addr, 0xff);
            }
    
          }
    
        }
      }
    
      lastState = currentState;
      insertCoin();
    }
    //---- FUNÇÕES DE SERVIÇOS -----------------------------
    void exibirLcd() {
      lcd.setCursor(0, 0);
      lcd.print("  FLIPERAMA 01");
      lcd.setCursor(0, 1);
      lcd.print("Total: "); lcd.print(counter);
    }
    // ------------------------------------------------------
    void insertCoin() {
      if (lastState == LOW) {
        digitalWrite(coinPin, buttonState);
      }
    }
    // ------------------------------------------------------
    void beep() {
      tone(beepPin, 1500, debounceDelay);
    }
    void escreveInt(int ende1, int ende2, int valor) { 
      int valorAtual = lerInt(ende1, ende2);
      if (valorAtual == valor) {
        return;
      }
      else { 
        byte primeiroByte = valor & 0xff;
        byte segundoByte = (valor >> 8) & 0xff; 
        EEPROM.write(ende1, primeiroByte);
        EEPROM.write(ende2, segundoByte);
      }
    }
    se ajudei custa nada dar um UP - uma reputaçaozinha

+ Responder ao Tópico

Tópicos Similares

  1. Programando no Arduino
    Por xan4545 no fórum Video Aulas (Qualquer linguagem)
    Respostas: 3
    Último Post: 09/03/2017, 02:46
  2. Maquina de Brinde Topa Ou Nao topa Digital
    Por brendoperes no fórum Venda
    Respostas: 0
    Último Post: 03/11/2015, 22:45
  3. fura fura digital.
    Por rgames no fórum Off-Topic (Assuntos Diversos)
    Respostas: 19
    Último Post: 16/05/2014, 23:21
  4. Montagem de controle arcade Analogico e Digital
    Por vargas310 no fórum Venda
    Respostas: 41
    Último Post: 17/09/2011, 16:19
  5. desenho com plotter digital serve em compensado sem formica?
    Por ninjitsu12 no fórum Dúvidas em Geral
    Respostas: 3
    Último Post: 07/09/2011, 12:28

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  • BB Code está Ligado
  • Smilies estão Ligados
  • Código [IMG] está Ligado
  • Código HTML está Desligado