Sivu 1/1

Arduino

ViestiLähetetty: Su Joulu 18, 2016 20:51
Kirjoittaja kalervo
Moro,Äly loppui.
Yritän kehitellä ultraääni anturasta toisen laista projektia.
Elikkä anturin lukema olisi vaikka 100cm
Kun painan napista tallentaisi tuon 100cm muuttujaan.
Sitten kun välimatka Lyhenee/pitenee ja näyttäisi vain lukua minkä matkan se on siirtynyt.
Elikkä tuo alku etäisyys olisi vaikka 100cm ja etäisyys kasvaisi/lyheneisi vaikka 50cm.
Lukeman minkä se näyttäs olisi tuo 50cm.

Alkuperäinen luku ei saisi muuttua vaikka etäisyys Lisääntyy tai vähentyisi.

Ainoastaa kun painaisi nappia alkaisi uusi Mittaus.

Nöyrimmät kiitokset jos voisitte autaa .

Re: Arduino

ViestiLähetetty: Su Joulu 18, 2016 21:34
Kirjoittaja peran
Minkälainen ultraäänianturi ?

Onko näyttää softaa, jolla saa mitan näkyviin.

Siis normaalin mitan, eikä muutosmittaa.

Edit - onko kyseessä tällainen härveli ?
http://ihmevekotin.fi/product/299_ultra ... ri-hc-sr04

Suomenkielistä tietoa löytyy kirjastosta: Sulautetut: Opi rakentamaan robotteja ja muita sulautettuja järjestelmiä.
Sivu 118-119
Luku 4 - Hyönteisrobotti

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 6:11
Kirjoittaja kalervo
HC-SR04 Ultraääni anturi.
Arduinon perus koodi jolla mitataan etäisyyttä kohteseen(seinään).
Ei taida nyt oppikirjat auttaa minua tässä ideassa.

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 8:46
Kirjoittaja GaryP
dist1= ensimmäinen mittaus
dist2=toinen mittaus
deltadist=dist2-dist1
näytä deltadist

Tuon koodaat sinne väliin ja tulostat sen mihin ikinä sen datan nyt kuuluukin tulla.
Eikös? Ei tuo oppikirjaa tarvitse.

Kari

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 9:51
Kirjoittaja peran
GaryP antoikin jo valmista pseudokoodia.

Jos et vieläkään keksi kuinka tehdä se, niin tarvinnet vähän opiskelua, jotta opit ohjelmoimaan.

Siispä siirry putkaan...
http://www.ohjelmointiputka.net/oppaat/ ... c_esittaja

http://www.ohjelmointiputka.net/oppaat/ ... cpp_ohj_01

Edit - Päivi Hietasen C++ ja Olio-ohjelmointi taitaa ampua vähän yli tarpeistasi (yli 800 sivua), mutta jos sen jaksat kahlata ymmärtäen, niin riittäneen ohjelmoinnin oppimiseen.

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 12:16
Kirjoittaja kalervo
Tuossa olisi koko roskaläjä.

#include <NewPing.h>

#define TRIGGER_PIN 11
#define ECHO_PIN 12
#define MAX_DISTANCE 400
const int LED = 13; // LED-liitin
const int BUTTON = 7; // kytkimen input-liitin
int val = 0; // alustetaan val tallentamaan input-liittimen tilatieto
int old_val = 0 ; // val-muuttujan edellinen eli vanha arvo
int state = 0; //
float matka1 = 0;
float matka2 = 0;
float matka3 = 0;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
Serial.begin(9600);
pinMode (LED, OUTPUT); // LED output tilaan
pinMode (BUTTON, INPUT); // BUTTON
}

void loop() {
delay(50);
val = digitalRead(BUTTON); // luetaan input-arvo ja tallennetaan se
// tarkistetaan onko jotain muuttunut kytkimen tilassa
if((val == HIGH) && (old_val == LOW)) {
state = 1 - state;
delay(30); // viive millisekunneissa
}
old_val = val; // val on nyt vanha, joten tallennetaan se
if (state == 1) {
digitalWrite(LED, HIGH);
unsigned int uS = sonar.ping_cm();
float matka1 = (uS);// Tämä kait pitäisi tallentaa
//jonnekkin että ei muuttuisi
//Muutenkin virhettä pukkaa
float matka2 = (matka1);
float matka3 = matka2 - matka1();
Serial.print(matka3);// Tämä olisi tarkoitus saada näyttämään
// Matkan siirtymän, olkoon matka1 2m siirtymä 30cm Tulos olisi matka3 30cm
}
else {
digitalWrite(LED, LOW);
unsigned int uS = sonar.ping_cm();
Serial.print(uS);
Serial.println("CM");
}
}

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 15:52
Kirjoittaja L18
kalervo kirjoitti: if (state == 1) {
digitalWrite(LED, HIGH);
unsigned int uS = sonar.ping_cm();
float matka1 = (uS);// Tämä kait pitäisi tallentaa
//jonnekkin että ei muuttuisi
//Muutenkin virhettä pukkaa
float matka2 = (matka1);
float matka3 = matka2 - matka1();
Serial.print(matka3);// Tämä olisi tarkoitus saada näyttämään
// Matkan siirtymän, olkoon matka1 2m siirtymä 30cm Tulos olisi matka3 30cm
}

Jos nyt ymmärsin oikein, niin muuttaisin tuon ylläolevan näin:
Koodi: Valitse kaikki
if (state == 1) {
    digitalWrite(LED, HIGH);
    unsigned int uS = sonar.ping_cm();
    matka1 = uS;
    if(matka2 != 0){                             // Tässä tarkistetaan onko edellistä mittausta olemassa, jos
        matka3 = matka2 - matka1;      // on, niin lasketaan niiden erotus
    }
    matka2 = matka1;                // Tallennetaan viimeisin mittaus seuraavaa varten

    Serial.print(matka3);// Tämä olisi tarkoitus saada näyttämään
    // Matkan siirtymän, olkoon matka1 2m siirtymä 30cm Tulos olisi matka3 30cm
}

Tuolla sinun koodillasi matka3 olisi aina nolla, koska kopioit tuon matka1:n matka2:een ennen vähennyslaskun tekemistä. Lisäksi olit tuossa kopioinnissa määritellyt että matka1 on funktio?
Mille vehkeelle tuo koodi on? Arduino? En tiedä onko ihan oikein, mutta miksi noita muuttujien tyyppejä määritellään uudestaan kokoajan, ja miksi osa muuttujista on suluissa ja osa ei?
Arduino ei siis ole itselleni tuttu, jos tuo sille on.

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 16:02
Kirjoittaja GaryP
Tästähän se polku alkaa. :D :)

Itsellä on vähän tullut taukoa C:n kanssa, kiva kun joku muukin sitä täällä pyörittelee niin
saa vähän motivaatiota.

Eikä kannata lähteä sille linjalle että kysytään "miksi teit noin", asia ei välttämättä ole ihan vielä hallussa,
joten rakentava kritiikki hyvillä paranteluehdotuksilla on tosimiesten tapa auttaa. Tuolla arduinon
omalla foorumilla on eräs idiootti jolla on aina tapana lytätä uudet harrastajat, ei toisteta samoja virheitä.

Esittelu muuttujat valmiiksi koodin alussa, jatkossa voit siten vaan paukuttaa niille arvoja.

Mulla on nyt vähän huonosti ohjeita annettavaksi kun meinaa uni tulla silmään, mutta jospa huomenna
ymmärtäisi lukemansa paremmin.
:wink:

Kari

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 16:05
Kirjoittaja GaryP
Ja "Code"-painikkeella jatkossa koodit niin saa vähän tolkkua kirjoitusasustakin
Koodi: Valitse kaikki
Koodi tänne

  Pitäisi toimia sisennyksetkin nätisi?

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 16:14
Kirjoittaja L18
GaryP kirjoitti:Tästähän se polku alkaa. :D :)

Itsellä on vähän tullut taukoa C:n kanssa, kiva kun joku muukin sitä täällä pyörittelee niin
saa vähän motivaatiota.

Eikä kannata lähteä sille linjalle että kysytään "miksi teit noin", asia ei välttämättä ole ihan vielä hallussa,
joten rakentava kritiikki hyvillä paranteluehdotuksilla on tosimiesten tapa auttaa. Tuolla arduinon
omalla foorumilla on eräs idiootti jolla on aina tapana lytätä uudet harrastajat, ei toisteta samoja virheitä.

Esittelu muuttujat valmiiksi koodin alussa, jatkossa voit siten vaan paukuttaa niille arvoja.

Mulla on nyt vähän huonosti ohjeita annettavaksi kun meinaa uni tulla silmään, mutta jospa huomenna
ymmärtäisi lukemansa paremmin.
:wink:

Kari


Jaa, otsikossahan näköjään lukikin että arduino... :mrgreen:
Kyselin noista joistain jutuista lähinnä vain sen takia kun en tiedä sattuuko arduinossa olemaan jotain erityispiirteitä koodaamisen kanssa. :)

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 22:06
Kirjoittaja GaryP
Eipä siinä taida mitään erikoista olla, mutta meikäläisen kokemus loppuukin näissä laitteissa siihen.

Mun kokemukseni ovat hyviä, yksinkertaisia ratkaisuja, valmiita kirjastoja, omia oivalluksia jokunen,
mutta rajattu teho ja I/O-pinnien määrä ehkä pullonkaulana perus-Atmeleissa.

Olisi kiva saada kunnon keskustelua aikaiseksi, ilman ylenkatseita tai kauteutta kun joku
muu on jälleen kerran askeleen tai useammankin edellä. Meidän PiPi-ropotti saatiin jollain ihmeen ilveellä
joskus rakennettua jonkinsortin valmiuteen, mutta sitten lopahti into ja aika, osaaminen ei
riittänytkään enää.

L18, voitko tarkentaa, millaisia juttuja sinulla oli mielessä kun kysyit tuota?

Kari

Re: Arduino

ViestiLähetetty: Ma Joulu 19, 2016 23:23
Kirjoittaja L18
GaryP kirjoitti:Eipä siinä taida mitään erikoista olla, mutta meikäläisen kokemus loppuukin näissä laitteissa siihen.

Mun kokemukseni ovat hyviä, yksinkertaisia ratkaisuja, valmiita kirjastoja, omia oivalluksia jokunen,
mutta rajattu teho ja I/O-pinnien määrä ehkä pullonkaulana perus-Atmeleissa.

Olisi kiva saada kunnon keskustelua aikaiseksi, ilman ylenkatseita tai kauteutta kun joku
muu on jälleen kerran askeleen tai useammankin edellä. Meidän PiPi-ropotti saatiin jollain ihmeen ilveellä
joskus rakennettua jonkinsortin valmiuteen, mutta sitten lopahti into ja aika, osaaminen ei
riittänytkään enää.

L18, voitko tarkentaa, millaisia juttuja sinulla oli mielessä kun kysyit tuota?

Kari


Siis, lähinnä mietin että onko noilla jokin funktio esim. kun aloittaja on joitakin muuttujia laittanut sulkeiden sisään koodissaan. Ei mitään kummempaa oikeastaan. Aina joskus haluaisi kokeilla arduinoakin kun se tuntuu olevan niin suosittu, mutta aina jotenkin palaan tuttuun ja turvalliseen picciin, jolle on tullut varmaan tuhansia rivejä koodia kirjoitettua. :mrgreen:
Mutta eipä se C-kieli taida paljoa erota eri laitealustojen välillä.

Re: Arduino

ViestiLähetetty: Ti Joulu 20, 2016 4:55
Kirjoittaja GaryP
Jaa, tarkoitat siis että kun muuttuja esitellään joka kerta uudestaan "privaatisti"? Ei kai siinä mitään järkeä ole, paitsi jos haluaa että sama muuttujanimi sisältää eri arvon sisäisien kutsujen välillä, joka on varmasti omiaan sotkemaan koodaajan ja koodia seuraavan henkilön ajatukset. :)

Itse esittelen muuttujia aika vapautuneesti heti ohjelman alussa, luon kaikille oman, lukuunottamatta apumuuttujia, joiden sisältö nollataan aina varmuuden vuoksi funktioiden alussa.

Ja nyt kannattaa huomioida että vaikka minulla on ohjelmoijan mieli, en ole silti mikään
hyvä esimerkki/taitava, edes uskottava. On niin monta tapaa päästä samoihin oikeisiin
lopputuloksiin, epäilen aina uutta koodia tulkitessani omaa älykkyyttäni jos en ymmärrä.

Jaottelen koodit aina selkeisiin omiin pikkuruisiin toimintayksiköihin joita kutsun tarvittaessa apuun,
On ollut pakko kehitellä omat tavat toimia kun viisi erduinoa keskustelee keskenään I2C-väylän
kautta ja yrittävät pysyä synkassa, tehdä omalla vuorollaan omat rutiininsa, antaa palautteen
pääpirulle (sirulle), ja jäävät sitten odottelemaan uusia ohjeita. Ja silti mättää vähän väliä.
Kun ymmärtäisi paremmin debuggausta, voisi ongelmat ratketa, epäilen monesti kuitenkin
sitä kilometrin johtohässäkkää sekä liitoksia informaatiokatkoista. Mutta mikään ei voi olla varmaa.

Kari