Arduino PRO Micro-Turnigy 9X
- Sławek
- Site Admin
- Posty: 14537
- Rejestracja: 21 gru 2011, 22:12
- Has thanked: 15 times
- Been thanked: 22 times
Re: Arduino PRO Micro-Turnigy 9X
Tu masz soft który odczytuje sygnał kanału z odbiornika i steruje serwem
Pozdr
Kod: Zaznacz cały
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <Servo.h>
int wejscieRC = 3; // nr PIN wejścia z kanału 1 odbiornika
int wyjscieSerwo = 10; //nr PIN wyjścia sygnału serwa
Servo mojeserwo;
unsigned long Channel1Value;
unsigned long lastgood1;
unsigned long InitialSteer;
boolean Right;
int Steer;
void setup()
{
Serial.begin(9600);
Serial.println("Gotowe");
pinMode (wejscieRC, INPUT);
mojeserwo.attach(wyjscieSerwo);
InitialSteer = pulseIn (wejscieRC, HIGH);
lastgood1 = InitialSteer;
}
void loop()
{
Channel1Value = pulseIn (wejscieRC, HIGH, 20000);
if (Channel1Value == 0) {
Channel1Value = lastgood1;
} else {
lastgood1 = Channel1Value;
}
if (Channel1Value < InitialSteer) {
Right = false;
} else {
Right = true;
}
if (Right) {
Steer = Channel1Value - InitialSteer;
} else {
Steer = InitialSteer - Channel1Value;
}
Steer = map(Channel1Value, 1070, 1970, 0, 179);
mojeserwo.write(Steer);
}
Re: Arduino PRO Micro-Turnigy 9X
Podpowiedz mi tylko jeszcze jak wyciągnąć instrukcje z loop`a.
Mam migające diody x3 i jak załączę wszystkie to nie migają cały czas tylko 1,2,3 i tak non stop.Jedna działa ok ale razem to jest du*a.
Jak to rozwiązać
Mam migające diody x3 i jak załączę wszystkie to nie migają cały czas tylko 1,2,3 i tak non stop.Jedna działa ok ale razem to jest du*a.
Jak to rozwiązać
Re: Arduino PRO Micro-Turnigy 9X
Nie dam rady teraz bo w pracy. Późnym wieczorem wrócę i od razu wstawię.
Re: Arduino PRO Micro-Turnigy 9X
Jest to tylko zmieniony kod a nie pisany przeze mnie.
byte PinRx1 = 4; // sygnal kan4 podlaczony do Pin8
byte PinRx2 = 6; // sygnal kan6 podlaczony do Pin9
byte PinRx3 = 8; // sygnal kan7 podlaczony do Pin10
byte PinRx4 = 9; // sygnal kan8 podlaczony do Pin8
byte PinRx5 = 5; // sygnal kan2 podlaczony do Pin9
// (poczatek detekcji)
int PPM1 = 0; //kierunki
int PPM2 = 0; //silnik
int PPM3 = 0; //silnik 2
int PPM4 = 0; //światła
byte Rx3 = 0; // zmienna pomocnicza (poczatek detekcji)
int kanal81 =0;
int kanal82 =0;
int lewy =0;
int prawy =0;
int Licz = 0; // zmienne pozwalajace drukowac
int LiczMax = 10; // co 20 impuls PPM1
void setup()
{
pinMode(7,OUTPUT); // kogut
pinMode(10,OUTPUT); //drogowe
pinMode(15,OUTPUT); //robocze
pinMode(14,OUTPUT); //lewy
pinMode(18,OUTPUT); //prawy
pinMode(16,OUTPUT); //silnik
pinMode(19,OUTPUT); //ślimak
pinMode(PinRx1,INPUT); // ustaw PinRx1 jako wejscie
pinMode(PinRx2,INPUT); // ustaw PinRx2 jako wejscie
pinMode(PinRx3,INPUT); // ustaw PinRx3 jako wejscie
pinMode(PinRx4,INPUT);
pinMode(PinRx5,INPUT);
Serial.begin(57600); // ustaw predkosc transmisji
}
void loop() {
do //czekaj az pojawi sie impuls na kan8
{ //i wtedy rozpocznij detekcje kan1 i kan2
Rx3=digitalRead(PinRx3);
} while (Rx3==0);
Rx3=0;
PPM1=pulseIn(PinRx1,HIGH); // detekcja impulsu PPM na PinRx1
PPM2=pulseIn(PinRx2,HIGH); // detekcja impulsu PPM na PinRx2
PPM3=pulseIn(PinRx3,HIGH);
PPM4=pulseIn(PinRx4,HIGH);
Licz += 1; // zwieksz licznik impulsow o 1
if (Licz>LiczMax) { // drukuj wartosc co n-ty impuls
Serial.print(PPM1);
Serial.print("; ");
Serial.print(PPM2);
Serial.println("; ");
Serial.print(PPM3);
Serial.print("; ");
Serial.print(PPM4);
Serial.println("; ");
Serial.print(prawy);
Serial.println("p");
Serial.println("; ");
Serial.print(lewy);
Serial.println("l");
Serial.println("; ");
Licz = 0;
}
if(PPM3 >= 1000)
{
digitalWrite(16,HIGH);
}
else digitalWrite(16,LOW);
if(PPM4 <= 900)
{
kanal81++;
delay(500);
}
if(kanal81 == 1)
{
digitalWrite(10,HIGH);
}
if(kanal81 == 2)
{
digitalWrite(15,HIGH);
}
if(kanal81 == 3)
{
kanal81=0;
}
if(kanal81 ==0)
{
digitalWrite(15,LOW);
digitalWrite(10,LOW);
}
if(PPM4 >= 1500)
{
kanal82++;
delay(500);
}
if(kanal82 == 1)
{
digitalWrite(7,HIGH);
delay(150);
digitalWrite(7,LOW);
delay(150);
}
if(kanal82 == 2)
{
kanal82=0;
}
if(kanal82 == 0)
{
digitalWrite(7,LOW);
}
if(PPM2 >= 1000)
{
digitalWrite(19,HIGH);
}
else digitalWrite(19,LOW);
if(PPM1 <=900)
{
lewy++;
delay(500);
}
if(PPM1 >=1500)
{
prawy++;
delay(500);
}
if(lewy == 1)
{
digitalWrite(14,HIGH);
delay(500);
digitalWrite(14,LOW);
delay(500);
}
if(prawy == 1)
{
digitalWrite(18,HIGH);
delay(500);
digitalWrite(18,LOW);
delay(500);
}
if(lewy == 2)
lewy=0;
if(prawy == 2)
prawy=0;
}
byte PinRx1 = 4; // sygnal kan4 podlaczony do Pin8
byte PinRx2 = 6; // sygnal kan6 podlaczony do Pin9
byte PinRx3 = 8; // sygnal kan7 podlaczony do Pin10
byte PinRx4 = 9; // sygnal kan8 podlaczony do Pin8
byte PinRx5 = 5; // sygnal kan2 podlaczony do Pin9
// (poczatek detekcji)
int PPM1 = 0; //kierunki
int PPM2 = 0; //silnik
int PPM3 = 0; //silnik 2
int PPM4 = 0; //światła
byte Rx3 = 0; // zmienna pomocnicza (poczatek detekcji)
int kanal81 =0;
int kanal82 =0;
int lewy =0;
int prawy =0;
int Licz = 0; // zmienne pozwalajace drukowac
int LiczMax = 10; // co 20 impuls PPM1
void setup()
{
pinMode(7,OUTPUT); // kogut
pinMode(10,OUTPUT); //drogowe
pinMode(15,OUTPUT); //robocze
pinMode(14,OUTPUT); //lewy
pinMode(18,OUTPUT); //prawy
pinMode(16,OUTPUT); //silnik
pinMode(19,OUTPUT); //ślimak
pinMode(PinRx1,INPUT); // ustaw PinRx1 jako wejscie
pinMode(PinRx2,INPUT); // ustaw PinRx2 jako wejscie
pinMode(PinRx3,INPUT); // ustaw PinRx3 jako wejscie
pinMode(PinRx4,INPUT);
pinMode(PinRx5,INPUT);
Serial.begin(57600); // ustaw predkosc transmisji
}
void loop() {
do //czekaj az pojawi sie impuls na kan8
{ //i wtedy rozpocznij detekcje kan1 i kan2
Rx3=digitalRead(PinRx3);
} while (Rx3==0);
Rx3=0;
PPM1=pulseIn(PinRx1,HIGH); // detekcja impulsu PPM na PinRx1
PPM2=pulseIn(PinRx2,HIGH); // detekcja impulsu PPM na PinRx2
PPM3=pulseIn(PinRx3,HIGH);
PPM4=pulseIn(PinRx4,HIGH);
Licz += 1; // zwieksz licznik impulsow o 1
if (Licz>LiczMax) { // drukuj wartosc co n-ty impuls
Serial.print(PPM1);
Serial.print("; ");
Serial.print(PPM2);
Serial.println("; ");
Serial.print(PPM3);
Serial.print("; ");
Serial.print(PPM4);
Serial.println("; ");
Serial.print(prawy);
Serial.println("p");
Serial.println("; ");
Serial.print(lewy);
Serial.println("l");
Serial.println("; ");
Licz = 0;
}
if(PPM3 >= 1000)
{
digitalWrite(16,HIGH);
}
else digitalWrite(16,LOW);
if(PPM4 <= 900)
{
kanal81++;
delay(500);
}
if(kanal81 == 1)
{
digitalWrite(10,HIGH);
}
if(kanal81 == 2)
{
digitalWrite(15,HIGH);
}
if(kanal81 == 3)
{
kanal81=0;
}
if(kanal81 ==0)
{
digitalWrite(15,LOW);
digitalWrite(10,LOW);
}
if(PPM4 >= 1500)
{
kanal82++;
delay(500);
}
if(kanal82 == 1)
{
digitalWrite(7,HIGH);
delay(150);
digitalWrite(7,LOW);
delay(150);
}
if(kanal82 == 2)
{
kanal82=0;
}
if(kanal82 == 0)
{
digitalWrite(7,LOW);
}
if(PPM2 >= 1000)
{
digitalWrite(19,HIGH);
}
else digitalWrite(19,LOW);
if(PPM1 <=900)
{
lewy++;
delay(500);
}
if(PPM1 >=1500)
{
prawy++;
delay(500);
}
if(lewy == 1)
{
digitalWrite(14,HIGH);
delay(500);
digitalWrite(14,LOW);
delay(500);
}
if(prawy == 1)
{
digitalWrite(18,HIGH);
delay(500);
digitalWrite(18,LOW);
delay(500);
}
if(lewy == 2)
lewy=0;
if(prawy == 2)
prawy=0;
}
Re: Arduino PRO Micro-Turnigy 9X
Udało mi się tylko tak
Podłączyłem wszystko tak jak mam i dołączam do tego widok mojej płytki
Nie mogłem znaleźć mojej płytki więc improwizowałem.Podłączyłem wszystko tak jak mam i dołączam do tego widok mojej płytki
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- Sławek
- Site Admin
- Posty: 14537
- Rejestracja: 21 gru 2011, 22:12
- Has thanked: 15 times
- Been thanked: 22 times
Re: Arduino PRO Micro-Turnigy 9X
Halo, halo, chcesz upalić arduino ? silniki nie podłacza sie bezpośrednio pod arduino tylko poprzez regulator.