Morjens.
Meillä on yliopistossa projektina valmistaa arduinopohjainen kaukoohjattava ilmatyynyalus. Hirvittävän kiireen ja osaamattomuuden vuoksi koodaaminen ei onnistu. Laitteemme toimii arduino uno ja lähettimessä on arduino nano.
Käytämme työssämme tälläisiä vastaanottimia ja lähettimiä.
instructables.com/id/RF-3154 … -and-Ardu/
Yleisesti ilmatyynyalus on rakenteeltaan paljon seuraavan kaltainen:
instructables.com/id/RC-Hovercraft/
Työntö ja nostomoottoreina toimivat kaksi harjatonta sähkömoottoria ja ohjaus toimii yhden servun avulla.
Ohjauksesta emme oikein tiedä. Olisiko siihen ehdotuksia? Jollain napeilla ajattelimme sen hoitaa, mutta koska ilmatyynyaluksessa ei ole jarruja, onko napeilla ohjaaminen liian hidasta?
Eli koodiin tarvitsisimme paljolti apua, jotta saisimme projektin valmiiksi.
Tässä koodiamme, jossa taitaa olla hyvin vähän järkeä:
int nosto = 0;
int eteen = 0;
int taakse = 0;
int oikealle = 0; // jännitteen arvo tallentaan tähän muuttujaan
int vasemmalle = 0;
#include <Servo.h>
#include <VirtualWire.h>
Servo servo; // peräsimen servo
//SETUP ALKAAA!!!
void setup() {
Serial.begin(9600);
servo.attach(2); //käynnistää servo nimisen pinnissä (tuntematon)
servo.write(90); // asettaa servon keskelle, 90 asteen kulmaan, ELI keskittäää servon keskelle
// VASTAANOTIN
Serial.begin(9600); // Debugging only
Serial.println(“setup”);
// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver PLL running
delay(1000);
}
//PÄÄOHJELMA ALKAA
void loop()
{
ojaus();
Serial.print("Jännite = " );
Serial.println(nosto); // "Serial.println" komento vaihtaa riviä tulostuksen jälkeen
Serial.print("Jännite2 = " );
Serial.println(eteen); // "Serial.println" komento vaihtaa riviä tulostuksen jälkeen
Serial.print("Jännite3 = " );
Serial.println(taakse); // "Serial.println" komento vaihtaa riviä tulostuksen jälkeen
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;
digitalWrite(13, true); // Flash a light to show received good message
// Message with a good checksum received, dump it.
Serial.print("Got: ");
for (i = 0; i < buflen; i++)
{
Serial.print(buf[i], HEX);
Serial.print(" ");
}
Serial.println("");
digitalWrite(13, false);
delay(1500);
}
//PÄÄOHJELMA LOPPUU
void ohjaus()
{
nosto.write(digitalInput1); //
eteen.write(digitalInput2); //
servo.write(digitalInput3); //
return;
}