Skocz do zawartości

ak95

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O ak95

  • Ranga
    1/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Zbudowałem coś takiego dwa lata temu do drona. Kluczem do sukcesu jest zastosowanie dobrej jakości joysticków. U mnie niestety ich działanie było bardzo nieliniowe i w centralnym położeniu ich reakcja była praktycznie zerowa.
  2. Mój projekt to nadajnik i odbiornik do np. samochodu RC. Oparty o arduino (w tym przypadku nano), moduł nRF24L01 i sterownik silnika (np. L293). Steruje jednym silnikiem DC oraz jednym serwem. Ma możliwość regulacji zakresu prędkości silnika, jak i zakresu serwa. https://www.forbot.pl/forum/topics61/nadajnik-i-odbiornik-do-samochodu-rc-na-module-nrf24l01-vt11607.htm
  3. Mój projekt to nadajnik i odbiornik do np. samochodu RC. Oparty o arduino (w tym przypadku nano), moduł nRF24L01 i sterownik silnika (np. L293). Steruje jednym silnikiem DC oraz jednym serwem. Ma możliwość regulacji zakresu prędkości silnika, jak i zakresu serwa. Uważam, iż projekt jest bardzo przydatny, gdyż sam zaczynając przygodę z komunikacją radiową na module nRF miałem spore problemy. W szkicu arduino korzystam z bibliotek RF24 oraz standardowej Servo. Odbiornik #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #include <Servo.h> //const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe const byte rxAddr[6] = "00001"; RF24 radio(7, 8); //pin CE i CS short joystick[2]; bool stan12=0; Servo myservo; int pos = 45; int a=0; void setup() { myservo.attach(10); // podlaczamy serwo do pinu 10 radio.begin(); radio.openReadingPipe(0,rxAddr); radio.startListening(); pinMode(5,OUTPUT); // pin do silnika pinMode(6,OUTPUT); //pin do silnika pinMode(9,OUTPUT); // pin PWM silnika pinMode(10,OUTPUT); //pin do serwa } void loop() { if ( radio.available() ) { bool done = false; while (!done) { radio.read( joystick, sizeof(joystick) ); a=joystick[0]; pos=joystick[1]; if(a>129) { digitalWrite(5,LOW); digitalWrite(6,HIGH); analogWrite(9,a); } else if(a<125) { digitalWrite(5,HIGH); digitalWrite(6,LOW); analogWrite(9,255-a); } else { digitalWrite(5,LOW); digitalWrite(6,LOW); } myservo.write(pos); } } else { Serial.println("No radio available"); delay(1000); } } Nadajnik #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> //const uint64_t pipe = 0xE8E8F0F0E1LL; const byte rxAddr[6] = "00001"; RF24 radio(7, 8); short joystick[2]; void setup() { radio.begin(); radio.setRetries(15, 2); radio.openWritingPipe(rxAddr); radio.stopListening(); pinMode(A0,INPUT); //joystick do regulacji predkosci silnika pinMode(A1,INPUT); //joystick do regulacji skretu serwa pinMode(A2,INPUT); //potencjometr do regulacji zakresu predkosci silnika pinMode(A3,INPUT); //potencjometr do regulacji zakresu skretu serwa } void loop() { short amax=map(analogRead(A2),0,1023,150,255); short posmax=map(analogRead(A3),0,1023,0,30); short a=map(analogRead(A0),0,1023,0,amax); short pos=map(analogRead(A1),0,1023,30-posmax,60+posmax); joystick[0]=a; joystick[1]=pos; radio.write( joystick, sizeof(joystick) ); }
×
×
  • Utwórz nowe...