Stránka 1 z 1

Začínám s Arduinem, první pokus

Napsal: 10 čer 2018, 22:42
od PCmaniac99
Tak jsem jsi taky objednal to arduino UNO. Klon z číny s celou krabicí a nějakým základním vybavením.

A hned mě napadlo k čemu ho využít, našel jsem RC loď bez ovládání. Tak vyzkouším ovládání pomocí IR ovladače doma v bazénu, na větší plochu se s tím neodvážím kuli dosahu IR. No a než mi arduino příjde tak jsem zkusil v simulátoru něco sesmolit a chodí to.
Pokud to bude chodit i ve skutečnosti tak pouvažuji nad přestavbou na wi-fi nebo bluetooth a ovládání mobilem.

Jinak místo 9V bude Li-ion akupack 7,4V.

Chtěl bych vás poprosit o kontrolu. A pokud máte lepší nápad jak vyřešit ovládání servomotoru pomocí IR ovladače, tak budu rád. Je to můj první pokus s programováním.

Kód: Vybrat vše

#include <Servo.h>

#include <IRremote.h>

Servo servo;

int ControlPin = 6;

int MotorPin1 = 8;

int MotorPin2 = 4;

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
  irrecv.enableIRIn();
  
  Serial.begin(9600);
  
  pinMode(MotorPin1, OUTPUT);
  
  pinMode(MotorPin2, OUTPUT);
  
  pinMode(ControlPin, OUTPUT);

  servo.attach(9);
}

void loop(){
  
  
  
  if (irrecv.decode(&results)){
        
    switch(results.value){
          case 0xFD807F: //Keypad button "Vpřed (volume +)"
          analogWrite(controlpin, 50);
          digitalWrite(MotorPin1, HIGH);
      	  digitalWrite(MotorPin2, LOW);
     	  delay(5);
          }

     switch(results.value){
          case 0xFDA05F: //Keypad button "Pause, zastaví motor"
          digitalWrite(MotorPin1, LOW);
      	  digitalWrite(MotorPin2, LOW);
     	  delay(5);
          }   
    
    
    switch(results.value){
          case 0xFD906F: //Keypad button "Vzad (volume -)"
          analogWrite(ControlPin, 50);
          digitalWrite(MotorPin1, LOW);
          digitalWrite(MotorPin2, HIGH);
          delay(5);
          }
       
    switch(results.value){
          case 0xFD08F7: //Keypad button "1"
          analogWrite(ControlPin, 90);
     	  delay(5);
          }   
   
    switch(results.value){
          case 0xFD8877: //Keypad button "2"
          analogWrite(ControlPin, 150);
     	  delay(5);
          }   
    
    switch(results.value){
          case 0xFD48B7: //Keypad button "3"
          analogWrite(ControlPin, 255);
     	  delay(5);
          }   
    
    switch(results.value){
          case 0xFD609F: //Keypad button "Vlevo"
          servo.write(180);
     	  delay(250);
          servo.write(89);
          }   
    
    switch(results.value){
          case 0xFD20DF: //Keypad button "Vpravo"
          servo.write(0);
     	  delay(250);
          servo.write(89);
          }
     
    Serial.println(results.value, HEX);
        irrecv.resume(); 
  }
}

Napsal: 11 čer 2018, 07:51
od Cowley
Ahoj, poskladej jinak to vlastni napajeni vsech prvku, hlavne jakmile prejdes na jiny typ napajeni.

Napsal: 11 čer 2018, 08:13
od jezevec
Ty Arduino malůvky, to je něco příšernýho...

Napsal: 11 čer 2018, 11:17
od PCmaniac99
Cowley: Jestli máš na mysli to "drátování", tak až to budu stavět, začnu na nepájivém poli ale pro lepší přehlednost jsem ho do simulace nedával.

Jezevec: Ten tinker umí export do .brd pro eagle, možná by to pak šlo převést na klasické schéma.

EDIT: Ten print na serial tam je jen dočasně kuli programování, abych věděl jaké tlačítko na ovladači má jakou hodnotu.

Napsal: 11 čer 2018, 11:33
od Cowley
To ne, tyhle maluvky me nechavaji klidnym :)
Jde o napajeni UNA. Bud pres Jacka a nebo Vin.
Taky 7805 potrebuje vetsi Vdrop.
No a servo neni vhodne krmit z 5V vytvorenych z UNO.

Z 5V z UNA nech napajeny jen ten IR prijimac.

Napsal: 11 čer 2018, 11:59
od PCmaniac99
To napájení serva mě napadlo že nebude uplně ok z una. Místo stabilizátoru použiju nějakej step down měnič. A ano napájení una bude přes Vin nebo jack, to by mě asi i napadlo kdybych to stavěl, v simulátoru ta možnost asi není.