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