#include #define IMONpin A3 #define pwmPin 9 // Digital pin 9 #define INB 6 // Digital pin 6 #define INA 5 // Digital pin 5 #define potPin A0 // Use potentiometer for Speed control #define voltPin A1 int lastReading = -1; //currentsense const int mVperAmp = 249; //volt sense const float R2 = 9500.0; const float R1 = 103750.0; //smoothing const float numReadings = 15.0; float readings; // the readings from the analog input int index = 0; // the index of the current reading float total; // the running total float average = 0; // the average void setup() { //for debugging Serial.begin(9600); Serial.print("Hulkster Monitor"); //pinModes pinMode(pwmPin, OUTPUT); pinMode(INA, OUTPUT); pinMode(INB, OUTPUT); pinMode(IMONpin, INPUT); pinMode(potPin, INPUT); //-------------------------// Timer1.initialize(100); // Frequency, 100us = 10khz digitalWrite(INA, LOW); digitalWrite(INB, LOW); for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings = 0; }//for }//setup void loop() { int senseVal = analogRead(IMONpin); delay(10); senseVal = analogRead(IMONpin); delay(10); float Voltage = (senseVal * 4.9) / 1023.0; // Gets you mV float Amps = (Voltage / mVperAmp); int reading = analogRead(potPin); delay(10); reading = analogRead(potPin); delay(10); if (reading != lastReading) { lastReading = reading; //Serial.println(reading); if ((reading >= 0) && (reading <= 490)) { digitalWrite(INA, LOW); digitalWrite(INB, HIGH); int mappedReading = map(reading, 490, 0, 0, 1023); int percentage = map(reading, 490, 0, 0, 100); if (percentage < 100) { } else if (percentage < 10) { }//else if Serial.print(percentage); Serial.print(" %"); Timer1.pwm(pwmPin, mappedReading); } else if ((reading >= 532) && (reading <= 1024)) { digitalWrite(INA, HIGH); digitalWrite(INB, LOW); int mappedReading = map(reading, 532, 1023, 0, 1023); int percentage = map(reading, 532, 1023, 0, 100); if (percentage < 100) { } else if (percentage < 10) { }//else if Serial.println(" "); Serial.print(percentage); Serial.println(" %"); Timer1.pwm(pwmPin, mappedReading); } else { digitalWrite(INA, LOW); digitalWrite(INB, LOW); digitalWrite(pwmPin, LOW); }//else }//if //////////////////////////////////////////// }//loop