קוד:
int numPinsENG1 = 20;
int ledPinsENG1[] = {14, 15, 16, 17, 18, 19, 20, 21, 22, 23,24,25,26,27,28,29,30,31,32,33};
int ledStatesENG1[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW,LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int numPinsENG2 = 20;
int ledPinsENG2[] = {34, 35, 36, 37, 38, 39, 40, 41, 42, 43,44,45,46,47,48,49,50,51,52,53};
int ledStatesENG2[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW,LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
// Analog pin A0 is where you hook the potentiometer up. Or microphone. Or w/e.
int sensorPinENG1 = A0;
int sensorValENG1 = 0;
int sensorPinENG2 = A1;
int sensorValENG2 = 0;
int enA = 9;
int in1 = A2;
int in2 = A3;
int enB = 10;
int in3 = A4;
int in4 = A5;
int SpeedControl1 = A0;
int SpeedControl2 = A1;
int MotorSpeed1 = 0;
int MotorSpeed2 = 0;
void setup() {
// set the digital pin as output:
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
int i = 0;
int e = 0;
for(i = 0; i < numPinsENG1; i++) {
pinMode(ledPinsENG1[i], OUTPUT);
for(e = 0; e < numPinsENG2; e++) {
pinMode(ledPinsENG2[e], OUTPUT);
}
}
}
void loop(){
sensorValENG1 = analogRead(sensorPinENG1);
sensorValENG1 /= 50;
sensorValENG2 = analogRead(sensorPinENG2);
sensorValENG2 /= 50;// want this to be btn 0-10
// arduino has a 10bit A->D converter. So divide 1024 by 100 gives us ~ 0-10 scale.
//ENG1
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
//ENG2
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// Read the values from the potentiometers
MotorSpeed1 = analogRead(SpeedControl1);
MotorSpeed2 = analogRead(SpeedControl2);
// Convert to range of 0-255
MotorSpeed1 = map(MotorSpeed1, 0, 1023, 0, 255);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 0, 255);
// Adjust to prevent "buzzing" at very low speed
if (MotorSpeed1 < 8)MotorSpeed1 = 0;
if (MotorSpeed2 < 8)MotorSpeed2 = 0;
// Set the motor speeds
analogWrite(enA, MotorSpeed1);
analogWrite(enB, MotorSpeed2);
int i = 0;
int e = 0;
for(i = 0; i < numPinsENG1; i++) {
if(sensorValENG1 > i) {
ledStatesENG1[i] = HIGH;
}
else {
ledStatesENG1[i] = LOW;
}
digitalWrite(ledPinsENG1[i], ledStatesENG1[i]);
}
for(e = 0; e < numPinsENG2; e++) {
if(sensorValENG2 > e) {
ledStatesENG2[e] = HIGH;
}
else {
ledStatesENG2[e] = LOW;
}
digitalWrite(ledPinsENG2[e], ledStatesENG2[e]);
}
}