lundi 10 août 2020

Arduino Code For Triggering And Charging TEST Device

Hi I am new at arduino and I need help for the pcb I made. With my pcb I am going to test some devices for the triggering and charging features. And I am sending signals from Arduino digital pins to start the trigger or charge . Trigger feature (the component I used is active zero so I started the signal with LOW in the code) works well but there is something wrong about the software part about charging. (arduino mega)

here is the code:

#include <PWM.h>
                  #include <Arduino.h>
                  
                  int device1tr = 2; // trigger signal pins
                  int device2tr = 3;
                  int device3tr = 4;
                  int device4tr = 5;
                  int device5tr = 6;
                  
                  int device1b = 7; // battery/charge signal pins
                  int device2b = 8;
                  int device3b = 9;
                  int device4b = 10;
                  int device5b = 11;
                  static int devnumber ;
                  int dn;
                  int *p;
                  
                  int ontime;
                  long ot;
                  int index = 0;
                  String inString = "";    // string to hold input
                  String myString = "";
                   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                   
                   void setup() 
                      {
                         Serial.begin(9600); 
                         Serial.println("\n ***********************Test************************"); 
                         Serial.println(""); 
                           delay(500);
                         
                         }   
                      
                       ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                      
                     void loop()    
                   {     
                         Serial.print("Enter the device number :\n");
                         Serial.println(""); 
                         delay(5000);
                         while (Serial.available() > 0)
                              {
                                devnumber = Serial.read();
                                if (isDigit(devnumber)) 
                                 {
                                   // convert the incoming byte to a char and add it to the string:
                                  inString += (char)devnumber;
                                  }
                                // if you get a newline, print the string, then the string's value:
                                if (devnumber == '\n') 
                                {           
                                  Serial.print("Device Number (value): ");
                              /*Serial.println(inString.toInt());
                                Serial.print("String: ");
                                Serial.println(inString);
                                Serial.println("");*/
                                
                                 devnumber=(inString.toInt());
                                 devnumber=(inString.toInt());
                                 Serial.print(devnumber);
                                 Serial.print("\n"); 
                                 p=&devnumber;
                                 dn = *p;
                                 
                                         
                       ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                         
                                 if (devnumber==1)
                                   {pinMode(device1tr, OUTPUT);
                                    delay(1000);
                                   devnumber=Serial.println(inString.toInt());
                                   Serial.println("X");
                                   }
                                 else if (devnumber==2)
                                  {pinMode(device2tr, OUTPUT);
                                   delay(1000);
                                  devnumber=Serial.println(inString.toInt());
                                  Serial.println("Y");
                                  }            
                                 else if (devnumber==3)
                                  {pinMode(device3tr, OUTPUT);
                                   delay(1000);
                                   devnumber=Serial.println(inString.toInt());
                                   Serial.println("Z");
                                  }
                                 else if (devnumber==4)
                                  {pinMode(device4tr, OUTPUT);
                                   delay(1000);
                                   devnumber=Serial.println(inString.toInt());
                                   Serial.println("W");
                                   } 
                                 else if (devnumber==5)
                                 {pinMode(device5tr, OUTPUT);
                                  delay(1000);
                                  devnumber=Serial.println(inString.toInt());
                                  Serial.println("Q");
                                  }  
                                 else
                                 {Serial.println("device numbers can only be 1,2,3,4 or 5.");
                                  devnumber=Serial.println(inString.toInt());
                                  Serial.end();
                                 }  
                  
                   /////////////////////////////
                                        delay(4000);
                                        Serial.print("triggering device ");
                                        Serial.print(dn);
                                        Serial.println("\n");
                                        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                    for (int i=0; i<2; i++)
                                    { /*Serial.print("triggering device");
                                     Serial.print(devnumber);
                                     Serial.println("");*/
                                          if (dn==1)
                                          {
                                          digitalWrite(device1tr, LOW);//pin LOW for on time
                                          delay(5000);
                                          digitalWrite(device1tr, HIGH);//pin HIGH for off time
                                          delay(3000);
                                          Serial.print("a");
                                          digitalWrite(device1tr, LOW);
                                          }
                                          else if (dn==2)
                                          {
                                          digitalWrite(device1tr, LOW);//pin LOW for on time
                                          delay(5000);
                                          digitalWrite(device2tr, HIGH);//pin HIGH for off time
                                          delay(3000);
                                          Serial.print("b");
                                          digitalWrite(device1tr, LOW);
                                          }
                                          else if (dn==3)
                                          {
                                          digitalWrite(device3tr, LOW);//pin LOW for on time
                                          delay(5000);
                                          digitalWrite(device3tr, HIGH);//pin HIGH for off time
                                          delay(3000);
                                          Serial.print("c");
                                          digitalWrite(device3tr, LOW);
                                          }
                                          else if (dn==4)
                                          {
                                          digitalWrite(device4tr, LOW);//pin LOW for on time
                                          delay(5000);
                                          digitalWrite(device4tr, HIGH);//pin HIGH for off time
                                          delay(3000);
                                          Serial.print("d");
                                          digitalWrite(device4tr, LOW);
                                          }
                                           else if (dn==5)
                                          {
                                          digitalWrite(device5tr, LOW);//pin LOW for on time
                                          delay(5000);
                                          digitalWrite(device5tr, HIGH);//pin HIGH for off time
                                          delay(3000);
                                          Serial.print("e");
                                          digitalWrite(device5tr, LOW);
                                          }
                                          delay(500);
                                          
                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
                                   } 
                                }
                                
                         }
                                     
                          delay(2000);    
                          Serial.println(""); 
                          Serial.println("Triggering is done.");
                          delay(1000);
                          Serial.println("");
                       ////////////////////////////////////////////////////////////////////////////////////////////////////////////   
                          Serial.println("How long would you like to charge the device? (minutes)\n");
                          delay(3000);
                          while (Serial.available() >= 0)
                            {      
                              ontime = Serial.read();
                              if (isDigit(ontime)) 
                               {
                                 // convert the incoming byte to a char and add it to the string:
                                myString += (char)ontime;
                                }
                              // if you get a newline, print the string, then the string's value:
                              if (ontime=='\n') 
                               {           
                                Serial.println("charging time:\n");
                                Serial.println(myString.toInt());
                                delay(5000);
                                break;
                                } 
                                
                                ontime=(myString.toInt());
                                
                                delay(6000);
                                /////////////////////////////////////////////////////////////////////////////////////////////
                                Serial.println("ontime :\n");
                                Serial.print(ontime);
                                ot = ((ontime)*(60000)); 
                                long halfcharge= ((ot)/2) ;
                                Serial.println("");
                                Serial.println("ontime as miliseconds : \n");
                                Serial.print(ot);
                                
                                Serial.println("");
                                Serial.print("Device ");
                                Serial.print(dn);
                                Serial.print(" is charging.\n");
                                delay(2000);
                                
                              if (dn==1)
                                {digitalWrite(device1b, LOW);
                                digitalWrite(device1b, HIGH);//pin HIGH for on time
                                delay(halfcharge);
                                Serial.print("still charging. ");
                                delay(1000);
                                Serial.print(". ");
                                delay(1000);
                                Serial.print(".a\n ");
                                digitalWrite(device1b, HIGH);
                                delay(halfcharge);
                                delay(1000);
                                Serial.print("charging is done.");
                                digitalWrite(device1b, LOW);//pin LOW for off time
                                delay(10000);
                                }
                                else if (dn==2)
                                {digitalWrite(device2b, LOW);
                                digitalWrite(device2b, HIGH);//pin HIGH for on time
                                delay(halfcharge);
                                Serial.print("still charging. ");
                                delay(1000);
                                Serial.print(". ");
                                delay(1000);
                                Serial.print(".b\n ");
                                digitalWrite(device2b, HIGH);
                                delay(halfcharge);
                                delay(1000);
                                Serial.print("charging is done.");
                                digitalWrite(device2b, LOW);//pin LOW for off time
                                delay(10000);
                                }
                                else if (dn==3)
                                {digitalWrite(device3b, LOW);
                                digitalWrite(device3b, HIGH);//pin HIGH for on time
                                delay(halfcharge);
                                Serial.print("still charging. ");
                                delay(1000);
                                Serial.print(". ");
                                delay(1000);
                                Serial.print(".c\n ");
                                digitalWrite(device3b, HIGH);
                                delay(halfcharge);
                                delay(1000);
                                Serial.print("charging is done.");
                                digitalWrite(device3b, LOW);//pin LOW for off time
                                delay(10000);
                                }
                                else if (dn==4)
                                {digitalWrite(device4b, LOW);
                                digitalWrite(device4b, HIGH);//pin HIGH for on time
                                delay(halfcharge);
                                Serial.print("still charging. ");
                                delay(1000);
                                Serial.print(". ");
                                delay(1000);
                                Serial.print(".d \n");
                                digitalWrite(device4b, HIGH);
                                delay(halfcharge);
                                delay(1000);
                                Serial.print("charging is done.");
                                digitalWrite(device4b, LOW);//pin LOW for off time
                                delay(10000);
                                }
                                 else if (dn==5)
                                {digitalWrite(device5b, LOW);
                                digitalWrite(device5b, HIGH);//pin HIGH for on time
                                delay(halfcharge);
                                Serial.print("still charging. ");
                                delay(1000);
                                Serial.print(". ");
                                delay(1000);
                                Serial.print(".e\n ");
                                digitalWrite(device5b, HIGH);
                                delay(halfcharge);
                                delay(1000); 
                                Serial.print("charging is done.");
                                digitalWrite(device5b, LOW);//pin LOW for off time
                                delay(10000);
                                }
                        Serial.end();
                             
                             } 
                      
                           
                    }   
                   

Aucun commentaire:

Enregistrer un commentaire