Pereiti prie turinio

Robotu programavimas su C


Rekomenduojami pranešimai

gal galit padeti suprogramuoti mygtuka, nes man nelabai kas iseina :unsure: :

 

const int buttonPin = 4; // the number of the pushbutton pin

const int ledPin = 8; // the number of the LED pin

 

// variables will change:

int buttonState = 0; // variable for reading the pushbutton status

 

void setup() {

// initialize the LED pin as an output:

pinMode(ledPin, OUTPUT);

// initialize the pushbutton pin as an input:

pinMode(buttonPin, INPUT);

Serial.begin(9600);

}

 

void loop(){

// read the state of the pushbutton value:

buttonState = digitalRead(buttonPin);

 

// check if the pushbutton is pressed.

// if it is, the buttonState is HIGH:

if (buttonState == HIGH) {

// turn LED on:

digitalWrite(ledPin, HIGH);

//Serial.print("mygtukas ijsungtas");

Serial.println(buttonState);

delay(1000);

}

else {

// turn LED off:

digitalWrite(ledPin, LOW);

// Serial.print("mygtukas ijungtas");

Serial.println(buttonState);

delay(1000);

}

}

Redagavo zumeris
Nuoroda į pranešimą
Dalintis kituose puslapiuose

o kaip reikia padaryti kad jei nuspaudi 1 karta mygtuka buna pavysdziu ijungia leda kad kai paspaudi mygtuka 2 kartus ijungia leda ir pradeda mirkscioti o kai paspaudi 3 kartus isjungia leda

p

 

laukiu konkreciu atsakymu o ne tokiu kad "pats ir skaityk o as tau nieko nesakysiu" dekui visiems kurie man pades zinau galiu truputi visus uzknisti bet as tik noriu ismokti programuoti arduina

Nuoroda į pranešimą
Dalintis kituose puslapiuose

o kaip reikia padaryti kad jei nuspaudi 1 karta mygtuka buna pavysdziu ijungia leda kad kai paspaudi mygtuka 2 kartus ijungia leda ir pradeda mirkscioti o kai paspaudi 3 kartus isjungia leda

p

 

laukiu konkreciu atsakymu o ne tokiu kad "pats ir skaityk o as tau nieko nesakysiu" dekui visiems kurie man pades zinau galiu truputi visus uzknisti bet as tik noriu ismokti programuoti arduina

 

Nemoku nei arduino nei dorai C, bet pats protipas atrodytų taip (ar bent jau pati idėja):

int i =0;
While(i <= 3){
if(i == 0){

//atliekam veiksma;
}
if(i == 1){
//atliekam veiksma;
}
if(i == 2){
//atliekam veiksma;
}
if(i == 3){
//atliekam veiksma;
i = 0; //(Tam, kad ciklas visada kartotusi)
}

 

 

P.s. kiekviena is siu patikrinimu reiketu atlikti po mygtuko paspaudimo.

 

 

P.p.s kaip jau minejau, nieko bendro su arduino dar nesu turejes, tik svajoju apie pabandyma, bet bent jau itariu, kad kodas atrodytu turetu panasiai.

Redagavo Tekstai
Nuoroda į pranešimą
Dalintis kituose puslapiuose

bet cia iklijuoti i void loop

 

Šiaip jei nori programuoti robotus, tau reiktų bent minimaliai pasiskaityti apie baigtinius automatus (angl. finite automata, finite automaton).

 

Baigtinis automatas (pavyzdžiui, robotas ar šiaip kokia programa) yra baigtinė būsenų aibė su perėjimais tarp jų. Būtent ta tavo lemputė turi skirtingas būsenas: šviečia, nešviečia, mirksi.

 

Va pavyzdžiui, būsenos diagrama liftui, kuris teturi du aukštus:

http://www.digilogwiki.com/images/6/6a/StateDiagram01.png

 

Elipsės yra automato būsenos, o rodyklės – perėjimai tarp jų.

 

Tavo būsenos būtų Įjungta, Mirksi ir Išjungta. Perėjimus tarp jų sužadina mygtuko paspaudimas:

┌---> (Įjungta) ---mygtuko paspaudimas---> (Mirksi) ---mygtuko paspaudimas---> (Išjungta) --┐
|                                                                                           |
└---------------------------------------------mygtuko paspaudimas---------------------------┘

 

Kaip aprašyti visas šias būsenas?

const int IJUNGTA = 0;
const int MIRKSI = 1;
const int ISJUNGTA = 2;
int busena = 0;

void for_loop() {
   //atliekam dabartinės būsenos veiksmus
   switch (busena) {
   case IJUNGTA:
       //įjungiam lemputę
       break;
   case MIRKSI:
       //lemputės mirksėjimo rutina
       blink_state();
       break;
   case ISJUNGTA:
       //išjungiam lemputę
       break;

   //pereinam į kitą būseną
   if (button_click) {
       busena = (busena + 1) % 3;
   }
   blink_state_transition();
}

 

Dabar iškyla kitas sunkumas – lemputę galima įjungti, lemputę galima išjungti. O kaip su mirksėjimu?

 

Mirksėjimas taip pat yra būsenų rinkinys. Tos būsenos yra dvi: dega, nedega. Kadangi toms būsenoms nėra jokio trigerio, tai tarp jų pereinama automatiškai.

 

┌---> (Dega) ---automatiškai---> (Nedega) --┐
|                                           |
└-----------automatiškai--------------------┘

 

Galėtume daryti taip:

const int DEGA = 0;
const int NEDEGA = 1;
int mirksejimo_busena = 0;

void blink_state() {
   switch (mirksejimo busena) {
   case DEGA:
       //ijungiama lempute
       break;
   case NEDEGA:
       //isjungiama lempute
       break;
   }
}

void blink_state_transition() {
   mirksejimo_busena = (mirksejimo_busena + 1) % 2;
}

 

Bet šis variantas ne itin geras, nes su kiekvienu ciklo apsisukimu (su kiekvienu automato taktu) lemputė bus įjungiama/išjungiama – viskas vyks per greitai. Reikėtų viską sulėtinti...

 

Tai padaryti labai paprasta. Tarkim, kad būsena dega yra ne 0 (iš viso vienas taktas), bet visi skaičiai, mažesni už 1000 (iš viso 1000 taktų). Atitinkamai būsenai nedega paliekam skaičius tarp 1000 ir 2000. Perrašome:

 

Galėtume daryti taip:

const int DEGA = 0;
const int NEDEGA = 1000;
const int MAX = 2000;
int mirksejimo_busena = 0;

void blink_state() {
   if (mirksejimo_busena == DEGA)
       //ijungiama lempute
   } else if (mirksejimo_busena == NEDEGA)
       //isjungiama lempute
   }
}

void blink_state_transition() {
   mirksejimo_busena = (mirksejimo_busena + 1) % MAX;
}

 

Dabar, kai būsena bus lygi 0, lemputė įsijungs, toliau visiems skaičiams nuo 1 iki 999 lemputė degs, ant 1000 išsijungs ir nuo 1001 iki 1999 nedegs.

 

Jeigu vienas taktas trunka 1 ms, tai pasirinkus tokį tempą lemputė 1 sekundę degs, po to 1 sekundei užges, vėl sekundę degs, vėl sekundei užges ir t. t.

Redagavo wi_lius
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Whiulius matai as dar esu naujokas su programavimu mokyts pradejau pries 2 savaites ir nelabai ka suprantu parasykit veikianti koda kad galeciau paziureti kaip daros nes taip galesiu ka nors ismokti nes man nelabai kas iseina.

Atsiprasau uz gramatines klaidas labai prasau visu padeti man.

Redagavo zumeris
Nuoroda į pranešimą
Dalintis kituose puslapiuose

tai gal kas nors galetu pavyzdi veikianti ikelti

Pilnas googlas tų pavyzdžių, netingėk pats pasiieškot, susirask kokią knygą ir skaityk. Jei neaiškumų kyla googlini, jei googlinti nemoki tai pats laikas išmokt ir tik kaip tikrai nesurandi info rašyk čia. Juk mes tavęs čia nemokysim kiekvienos smulkmenos. ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

jei nenori paul padeti tai kam is vis rasai tu man siulai varijanta "kam as tau turiu sakyt ieskokis pats" as tik papriausiau padeti su tuo mygtuko paspaudimas ir kolkas tik gavau 2 naudingus atsakimus bet dar vistiek laukiu pagalbos.jei jus nenorit padeti parasykit as tada nieko nebeklausinesiu nebenervinsiu jusu.

P.S nuo smulkmenu prasideda visas programavimas jei ka paul.

Redagavo zumeris
Nuoroda į pranešimą
Dalintis kituose puslapiuose

jei nenori paul padeti tai kam is vis rasai tu man siulai varijanta "kam as tau turiu sakyt ieskokis pats" as tik papriausiau padeti su tuo mygtuko paspaudimas ir kolkas tik gavau 2 naudingus atsakimus bet dar vistiek laukiu pagalbos.jei jus nenorit padeti parasykit as tada nieko nebeklausinesiu nebenervinsiu jusu.

P.S nuo smulkmenu prasideda visas programavimas jei ka paul.

 

Tai tame ir esmė, kad nuo smulkmenų... :) Arduino programavimas nėra smulkmena (tuo labiau, kad net anglų kalbos nemoki).

Redagavo facis1
Nuoroda į pranešimą
Dalintis kituose puslapiuose

o kaip reikia padaryti kad jei nuspaudi 1 karta mygtuka buna pavysdziu ijungia leda kad kai paspaudi mygtuka 2 kartus ijungia leda ir pradeda mirkscioti o kai paspaudi 3 kartus isjungia leda

p

 

laukiu konkreciu atsakymu o ne tokiu kad "pats ir skaityk o as tau nieko nesakysiu" dekui visiems kurie man pades zinau galiu truputi visus uzknisti bet as tik noriu ismokti programuoti arduina

 

Visu pirma paprastas mygtukas yra dviejų padėčių. Prisijunk daugiau led ir gali žaisti. Ant kelio užvedėm, telieka tik pasukti smegenis.

 

const int buttonPin = 4; // mygtukas

const int ledPin = 8;

 

int buttonState = 0;

 

void setup() {

 

pinMode(ledPin, OUTPUT);

pinMode(buttonPin, INPUT);

Serial.begin(9600);

}

 

void loop(){

buttonState = digitalRead(buttonPin);

 

if (buttonState == HIGH) {

digitalWrite(ledPin, HIGH);

delay(1000);

}

else { // mirksės led

 

digitalWrite(ledPin, HIGH);

delay(500);

digitalWrite(ledPin, LOW);

delay(500);

}

}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, labai sudomino robotų programavimas. Tiesa, su C++ nesinori, tai norėčiau su Python. Pasidomėjęs radau, kad Arduino galima programuoti su Python, ar tai tiesa? Kokių detalių pradžiai reiktų? Žinau, kad reiktų chipų, kuriuos užprogramuoti galima būtų keletą kartų, procesoriaus (?) ir kas be ko pultelio ar dar ko, su kuo galima būtų valdyti. Kiek maždaug tokios roboto detalės galėtų kainuoti. Beje, kaip su simuliatoriais? Ar pradžiai ir jų užtektų?

Imk ne tik Arduino bet ir Raspberry pi tuomet laisvai galėsi rašyti python scriptus :) Pvz : http://readwrite.com/2014/04/16/arduino-raspberry-pi-connected-home-tutorials-projects#awesm=~oEw8jHLGKl87Es

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

mane taip pat sudino Arduino, tad butu idomu pazaisti. Iskarto prie reikalo: kokia iranga reiketu pradeti norint sukurti vazinejanti prietaisa kuris isvengia kliuciu(pvz, apsisuka). Kiek ziurejau is http://www.darysiupats.lt/arduino.html yra daug pasirinkimu, butu idomu pasiimti http://www.darysiupats.lt/arduino/arduino-bluetooth-plokste.html sia plokste, kuri gali buti suderinama su bluetooth, tad butu daugiau galimybiu. O kokiu reik priedu? Kokie "jutikliu"? Aciu uz betkokia pagalba!

Nuoroda į pranešimą
Dalintis kituose puslapiuose

PITSTkiskis as ta suprantu taip mygtuka moku programuoji bet jei mygtukas ijungtas tai jis ijungia leda arba uz gesina tai ta suprantu o jeigu mygtukas isjungtas led uzgesina arba ijungia bet man reikia pvz jei paspaudimu yra tam tikras skaicius padaro ta ana man reikia kodo tisiog

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

mane taip pat sudino Arduino, tad butu idomu pazaisti. Iskarto prie reikalo: kokia iranga reiketu pradeti norint sukurti vazinejanti prietaisa kuris isvengia kliuciu(pvz, apsisuka). Kiek ziurejau is http://www.darysiupats.lt/arduino.html yra daug pasirinkimu, butu idomu pasiimti http://www.darysiupats.lt/arduino/arduino-bluetooth-plokste.html sia plokste, kuri gali buti suderinama su bluetooth, tad butu daugiau galimybiu. O kokiu reik priedu? Kokie "jutikliu"? Aciu uz betkokia pagalba!

 

Neapsimoka pirkti su integruotu BT. Iš ebay HC-05 modulį už 18 litų nusipirksi ir puikiai viską valdyt galėsi, o arduino uno pilnai užteks tau. Tai yra ultragarsinių jutiklių.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

as irgi zadu daryti robotuka kuris turetu isvengti kliutis jau esu visa koda padares belike viska sudeti darau su arduino uno r3 bet man iskilo klausimas kaip padaryti jei sensoriu mato 2 sek tai tada pasisuka nuo kliuties o jei maziau laiko mato tai niekas nevyksta kaip taip reikia padaryti?

Redagavo zumeris
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...