尝试用 arduino 构建 counter/stopwatch。接线正确吗?

Trying to build a counter/stopwatch with arduino. is this wired correctly?

我正在尝试为 arduino 制作秒表和计数器项目。除了代码,这是否正确连接?

最上面的按钮是启动秒表的按钮,第二个是启动计数器的按钮(每按一次加一),底部的按钮应该是重置其中任何一个。绿灯表示已选择秒表,蓝色表示已选择计数器。液晶显示器是显示一切obviusly。另外,学习编写此代码的最佳方法是什么,需要多长时间?谢谢

据我所见,缺点ide如您上面所解释的那样,连接是正确的。但问题是你要尽可能说清楚,因为LCD连接有交叉点,调试和解决连接问题会非常困难,所以你必须把它弄清楚。学习编写这些东西没有火箭科学,只需运用你的智慧,开始阅读关于 arduino ide(太简单也太有用)的书籍、博客、文章、c 编程和微控制器,以及 youtube videos 是学习编码的好资源,你应该有一些 c 编程经验,仅此而已。

这是您要求的代码。我已经按照上面的连接定义了引脚。计数器模式有分钟和秒,它不包含毫秒,因为我在实现它时遇到问题。如果你有任何办法,你可以建议我。计数器模式选择按钮与用于递增计数器的按钮相同。

    
    #include <LiquidCrystal.h> 
    LiquidCrystal mylcd(7,6,5,4,3,2);
    
    int counter_sel=12,stopwatch_sel=11,reset1=10,stopwatch_led=9,counter_led=8;
    
    void setup() 
    {
        mylcd.begin(16,2);
        mylcd.setCursor(0,0);
        mylcd.print("Counter and ");
        mylcd.print("Stopwatch");
        delay(1000);
     
        pinMode(counter_sel,INPUT);
        pinMode(stopwatch_sel, INPUT);
        pinMode(reset1, INPUT);
        pinMode(counter_led,OUTPUT);
        pinMode(stopwatch_led, OUTPUT);
    }
    
    void loop() 
    {     int state1=digitalRead(counter_sel);
          int state2=digitalRead(stopwatch_sel);
          if (state1==0) {delay(300); counter();  } // call counter function
          else if (state2==0) {delay(300); stopwatch(); } // call stopwatch function
          
    }
    void counter()
    {     mylcd.clear();
          digitalWrite(counter_led,1);
          mylcd.setCursor(0,0);
          mylcd.print("Counter Mode :");
          short int i=0;
          while(1)
          {
            int rst=digitalRead(reset1);
              if (rst==0) { delay(300); break;}
            int state1=digitalRead(counter_sel);
            if (state1==0) { i++; delay(200);}
            mylcd.setCursor(0,1);
            mylcd.print(i);
          }
          digitalWrite(counter_led,0);
    }
    void stopwatch()
    {
          mylcd.clear();
          digitalWrite(stopwatch_led,1);
          long int ms=millis();
          byte sec=0, mins=0;
          mylcd.setCursor(0,0);
          mylcd.print("Stopwatch Mode : ");
          while(1)
          { 
            mylcd.setCursor(0,1);
            int state1=digitalRead(reset1);
            if (state1==0){delay(300); break; } 
              if (sec==59) {mins++; sec=0;}
            if ((millis()-ms)>1000) {sec++; ms=millis(); }
            
            mylcd.print(mins);
            mylcd.setCursor(3,1);
            mylcd.print(":");
            mylcd.setCursor(5,1);
            mylcd.print(sec);
            mylcd.print(":");
            //mylcd.print(millis()-ms);
         } 
           digitalWrite(stopwatch_led,0); 
    }