Pomoc s naprogramovaním- auta na moduly nrf24l01
Napsal: 04 úno 2018, 18:43
Dobrý deň mám auto s 2 dc motormi kde som dal driver l298n a dosku arduino uno s pomocou internetu som spravil kod na ovládanie motorov na 2 joysticky ked ovládam s jedným joystickom po y ose do predu tak 2 motory idú do predu a ked dám po y ose joystick do druhej strany tak 2 motory idú do zadu. Ked pouzijem 2 joystick a hýbem po druhej ose tak ide jeden motor a druhý nejde a to ide do lava a ked hýbem s joystickom do druhej strany po x osi tak ide auto do smerom do prava , to funguje to je vyriešené potreboval by som tam vylepšiť že by som tam ultrasonický sensor a ked budem auto ovládať cez joystciky a bude niečo pred autom 20 cm tak ultrasonický senzor to zachytí a auto zastaví ked dám prekážku preč tak tak bude pokračovať v smere jazdy ako ho ovládam ešte v stredu mi prídu moduly nrf24l01 kde sa bude ovládať cez joysticky na dialku(zatial to mám len cez káble riešené robím to na robotickú sútaž vedeli by ste mi prosím spraviť kod na ten ultarsonický senzor na aute a ovládanie na dialku cez nrf24l01 kod na ovládanie cez káble mám spravený vedeli by ste mi spraviť kod prosím?

Kód: Vybrat vše
#define enA 9
#define in1 4
#define in2 5
#define enB 10
#define in3 6
#define in4 7
int motorSpeedA = 0;
int motorSpeedB = 0;
void setup() {
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
int xAxis = analogRead(A0); // Read Joysticks X-axis
int yAxis = analogRead(A1); // Read Joysticks Y-axis
// Y-axis used for forward and backward control
if (yAxis < 470) {
// Set Motor A backward
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// Set Motor B backward
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// Convert the declining Y-axis readings for going backward from 470 to 0 into 0 to 255 value for the PWM signal for increasing the motor speed
motorSpeedA = map(yAxis, 470, 0, 0, 255);
motorSpeedB = map(yAxis, 470, 0, 0, 255);
}
else if (yAxis > 550) {
// Set Motor A forward
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// Set Motor B forward
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// Convert the increasing Y-axis readings for going forward from 550 to 1023 into 0 to 255 value for the PWM signal for increasing the motor speed
motorSpeedA = map(yAxis, 550, 1023, 0, 255);
motorSpeedB = map(yAxis, 550, 1023, 0, 255);
}
// If joystick stays in middle the motors are not moving
else {
motorSpeedA = 0;
motorSpeedB = 0;
}
// X-axis used for left and right control
if (xAxis < 470) {
// Convert the declining X-axis readings from 470 to 0 into increasing 0 to 255 value
int xMapped = map(xAxis, 470, 0, 0, 255);
// Move to left - decrease left motor speed, increase right motor speed
motorSpeedA = motorSpeedA - xMapped;
motorSpeedB = motorSpeedB + xMapped;
// Confine the range from 0 to 255
if (motorSpeedA < 0) {
motorSpeedA = 0;
}
if (motorSpeedB > 255) {
motorSpeedB = 255;
}
}
if (xAxis > 550) {
// Convert the increasing X-axis readings from 550 to 1023 into 0 to 255 value
int xMapped = map(xAxis, 550, 1023, 0, 255);
// Move right - decrease right motor speed, increase left motor speed
motorSpeedA = motorSpeedA + xMapped;
motorSpeedB = motorSpeedB - xMapped;
// Confine the range from 0 to 255
if (motorSpeedA > 255) {
motorSpeedA = 255;
}
if (motorSpeedB < 0) {
motorSpeedB = 0;
}
}
// Prevent buzzing at low speeds (Adjust according to your motors. My motors couldn't start moving if PWM value was below value of 70)
if (motorSpeedA < 70) {
motorSpeedA = 0;
}
if (motorSpeedB < 70) {
motorSpeedB = 0;
}
analogWrite(enA, motorSpeedA); // Send PWM signal to motor A
analogWrite(enB, motorSpeedB); // Send PWM signal to motor B
}