Dieses Wochenende nochmal nachgedacht und weitergebastelt...
Der Arduino Uno/Nano hat 6 analoge Eingänge (A0..A5) und 6 PWM Ausgänge (3, 5, 6, 7, 9, 10, 11). Es ist also möglich mit 1 Arduino 1,5 H-Brücke zu regeln (6 Autos), mit 2 Arduinos also 3 H-Brücken und 12 Autos!
Für 1 Arduino mit 1 H-Brücke sieht das so aus:
Und die Arduinokode (für 6 Autos):
Diese woche weiterbasteln...
Der Arduino Uno/Nano hat 6 analoge Eingänge (A0..A5) und 6 PWM Ausgänge (3, 5, 6, 7, 9, 10, 11). Es ist also möglich mit 1 Arduino 1,5 H-Brücke zu regeln (6 Autos), mit 2 Arduinos also 3 H-Brücken und 12 Autos!
Für 1 Arduino mit 1 H-Brücke sieht das so aus:
Und die Arduinokode (für 6 Autos):
Code:
// AMScontrollerPWM.ino
//
// controls 2x 2 Faller AMS cars in same lane
// using L298N dual H bridge module and 4 (slide) potmeters
//
// ================================= [include libraries ] ==========================================
// none
// ================================= [global variables ] ==========================================
//
// input pins potmeters
const byte speed6pin = A0; // speed car 6 ++/-- potmeter
const byte speed1pin = A1; // speed car 1 ++/-- potmeter
const byte speed2pin = A2; // speed car 2 ++/-- potmeter
const byte speed3pin = A3; // speed car 3 ++/-- potmeter
const byte speed4pin = A4; // speed car 4 ++/-- potmeter
const byte speed5pin = A5; // speed car 5 ++/-- potmeter
//
// output pins H-bridge 1 (PWM)
const byte car1pin = 11; // lane A, cars 1 & 2
const byte car2pin = 10;
const byte car3pin = 6; // lane B, cars 3 & 4
const byte car4pin = 5;
// output pins H-bridge 2 (PWM)
const byte car5pin = 4; // lane C, cars 5 & 6
const byte car6pin = 9;
//
const byte pulsetime = 10; // pulse length at 50 Hz = 1/50 sec = 0.020 sec = 20 ms = 10 msec +pulse + 10 msec -pulse
//
// =========================== [ set up ]=========================================================================
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite (LED_BUILTIN, HIGH); // built-in LED on
pinMode(speed1pin,INPUT); // potmeter speed car 1
pinMode(speed2pin,INPUT); // potmeter speed car 2
pinMode(speed3pin,INPUT); // potmeter speed car 3
pinMode(speed4pin,INPUT); // potmeter speed car 4
pinMode(speed5pin,INPUT); // potmeter speed car 5
pinMode(speed6pin,INPUT); // potmeter speed car 6
pinMode(car1pin,OUTPUT); // control of H bridge 1, cars 1..4
pinMode(car2pin,OUTPUT); // all pins output
pinMode(car3pin,OUTPUT);
pinMode(car4pin,OUTPUT);
pinMode(car5pin,OUTPUT); // control of H bridge 2, cars 5,6
pinMode(car6pin,OUTPUT);
digitalWrite(car1pin,LOW); // all cars stop
digitalWrite(car2pin,LOW);
digitalWrite(car3pin,LOW);
digitalWrite(car4pin,LOW);
digitalWrite(car5pin,LOW);
digitalWrite(car6pin,LOW);
delay (1000); // wait 1 sec
digitalWrite (LED_BUILTIN, LOW); // built-in LED off
}
// =========================== [ main ] ==========================================================================
void loop() {
// ADC value on potmeter speed pin = 0..1023
// divide by 4 to convert to pulse 0..255 ==> 0..100% duty cycle
//
// for '+' cars in lane A, B & C (cars 1, 3 & 5)
digitalWrite (car1pin,LOW);
analogWrite (car2pin,analogRead(speed1pin)/4); // + car 1 in lane A
digitalWrite (car3pin,LOW);
analogWrite (car4pin,analogRead(speed3pin)/4); // + car 1 in lane B
digitalWrite (car5pin,LOW);
analogWrite (car6pin,analogRead(speed5pin)/4); // + car 1 in lane C
delay (pulsetime); // wait positive halfwave
// for '-' cars in lane A, B & C (cars 2, 4 & 6)
digitalWrite (car2pin,LOW);
analogWrite (car1pin,analogRead(speed2pin)/4); // - car 2 in lane A
digitalWrite (car4pin,LOW);
analogWrite (car3pin,analogRead(speed4pin)/4); // - car 2 in lane B
digitalWrite (car6pin,LOW);
analogWrite (car5pin,analogRead(speed6pin)/4); // - car 2 in lane C
delay (pulsetime); // wait negative halfwave
} // repeat forever
// ==========================[ end main ] ========================================================================
Diese woche weiterbasteln...