Pomoc s naprogramovaním- auta na moduly nrf24l01

Odpovědět
adam kovac123
Příspěvky: 2
Registrován: 04 úno 2018, 17:52
Reputation: 0

Pomoc s naprogramovaním- auta na moduly nrf24l01

Příspěvek od adam kovac123 » 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?
Obrázek

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
}

zbysek
Site Admin
Příspěvky: 125
Registrován: 22 úno 2017, 15:18
Reputation: 0

Re: Pomoc s naprogramovaním- auta na moduly nrf24l01

Příspěvek od zbysek » 05 úno 2018, 18:18

Jestli to je na robotickou soutěž, tak by asi bylo žádoucí kód vytvořit sám :)

Ovládání přes joysticky už tedy máte. Můžete pokračovat tím, že se naučíte používat ultrazvukový senzor.
Ten vám vrátí vzdálenost překážky jako číslo.
Ovládání pak bude fungovat tak, že když má auto jet dopředu, tak se ještě musí ověřit, jestli nevidí překážku. Pokud ano, tak sníží rychlost a podobně.

Další část může být zprovoznění komunikace mezi dvěma Arduiny - viz například: http://www.arduino8.cz/komunikujeme-bez ... -zapojeni/

adam kovac123
Příspěvky: 2
Registrován: 04 úno 2018, 17:52
Reputation: 0

Re: Pomoc s naprogramovaním- auta na moduly nrf24l01

Příspěvek od adam kovac123 » 05 úno 2018, 18:50

Dobrý deň ultrasonický sensor viem ako funguje skusal som robiť kody na to ale je neviem spojiť tie kody tak aby to islo a s modulmi nrf 24l01 som už robil nejaké jednoduché veci ale neviem spojit tie kody tak aby to islo

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Pomoc s naprogramovaním- auta na moduly nrf24l01

Příspěvek od ohruska » 08 úno 2018, 20:06

Zkuste se podívat na toto: http://joysfera.blogspot.cz/2015/03/tas ... duinu.html
Zjednodušuje to programování sychronních akcí. Asi tak by se mělo programovat to vaše autíčko.,

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů