Keresés

Hirdetés

Új hozzászólás Aktív témák

  • Sokimm

    senior tag

    Sziasztok!
    Nemrég kezdtem az arduino világába bele, és nem értek pár dolgot.
    (pro mini) atmega 168
    16 Kbytes flash (program)
    512 bytes EEPROM
    1Kbytes internal SRAM
    [http://www.atmel.com/images/doc2545.pdf]

    A programom feltöltődik a flash-be, (aminek élettartama 10.000 írás/törlés (tehát az olvasás nem rontja az élettartalmát?)), azután dolgozik a processzor (aminek élettartalma mennyi és mitől függ?), és idő közben a SRAM-ba (mint főtárba, aminek megint nem tudom mi az élettartama, és mitől függ) dobálja a futás közbeni értékeket.
    Nah az igazi kérdésem az, hogy az EEPROM minek van?
    Elméletileg Bios-t szoktak ilyen tárolóra "égetni" nem? ROM, ami elektronikusan írható, és gyors elérésű, ellenben a flash-al (ami lassabb elérésű, de még mindig ROM család leszármazott, de ez most lényegtelen...).
    Cserébe a flasht valami csomagonként (1 byte?) lehet írni/olvasni, az EEPROM-ot meg bitenként nem?

    Mire való az EEPROM az arduba, és mért a flash-re "égetem" a programom?

    Ha butaságot kérdeztem, meglehet, és utólagosan is elnézést kérek! Bármilyen építő hozzászólást köszönök!

  • Sokimm

    senior tag

    válasz Gergosz2 #3151 üzenetére

    Köszönöm szépen! Neked is Teasüti! Már világos, hogy mért nem értettem, mivel még nem volt szükségem ilyen dologra (tárolni valamit a programon kívül), de már tudom merre induljak tovább!
    Az élettartam dolgokra is köszi a linket, akkor nem félek, hogy a redőnyöm (vezérlője) bedöglik pár hónapon belül. :P

    [ Szerkesztve ]

  • Sokimm

    senior tag

    válasz ghostie #3295 üzenetére

    Elektronikai alapismeretek nélkül feleslegesnek látom az ilyen készletet (magamból indultam ki), mivel az arduino átlagosan csak egy legónak tekinthető, mindaddig, míg nem neked kell az elektronikai részéhez hozzányúlni (kivéve egy egy alkatrész cseréje, egy potméter bekötése, egy gomb-led bekötése). De az itt felsorolt lista nem igényel ilyen elektromos kezdőcsomagot. Az ardunio az felnőtt legó (szerintem), összerakod, írsz (vagy ollózol a netről) hozzá egy kódot, majd nézed és örülsz a végeredménynek. Ha ez elég stabilan megy (és mélyebb szinteket is megérintesz, akkor mélyülhetsz akár elektormos irányban, akár kódolás irányában (nem netről lopott include-okkal játszol), de ez még az elején nem igényel semmi mást, csak az alappanelt, meg a cél hardvereket, amilyen irányba készíted a projekted. (szerintem!)

    Természetesen ez egy magánvélemény, lehet tévedek (bátran javítsatok ki), de pár poti, led, előtét-ellenállás, lehúzó ellenállás (amit majd ha utánanézel, rájössz, hogy milyet vegyél) és kész is a "kezdő elektronikai kiegészíő pack".

    [ Szerkesztve ]

  • Sokimm

    senior tag

    válasz ghostie #3300 üzenetére

    Jogos a meglátásod, hogy mélyebbre szeretnél menni (jómagam is ez irányba törekszem), de tartom magam ahhoz a véleményemhez, hogy arduniozni nem kell elektronikai tudás. A neten (vagy középiskolás tankönyvekben) van egy képlet, kiszámolod mekkora ellenállás kell a led elé (nem kell nagyon tudni miért kell, csak így működik), és megy a móka. Ha mélyebbre akarsz menni (áramkörtervezés, 555ic, időzítők, stb), akkor meg amúgy is felesleges az arduino. :) (értsd jól, a ló másik végét ragadtam meg :D )

    A kettő együtt, túl nagy falat. Mondok példát: Szétszedtem egy kínai ledes övet, aminek kíváncsi voltam, milyen elektronikai háttere volt. Van benne egy atmel eeprom, amit egy felirat mentes ic hajt meg, és 3 nyomógomb. Nah akkor most (arduino vs elektronika) menjek tovább? Ha arduinozni akarok, az eeprom használatát megnézem más hogy csinálja a neten, és máris külső memóriaként tudom használni ezt az atmel ic-t (az arduinomhoz). Ha elektronikailag akarok tovább menni, akkor a határ (áramköri szinten lefele), a csillagos ég.

    Tehát az arduino-hoz nem feltétlen kell bármilyen npn-pnp tranyókkal szenvedni, csak ha van rá lelki erőd. Ez esetben pedig a pdf-je tényleg többet mond minden próbálkozásnál (nyitófesz, átviteli értékek), aztán ha használni akarod a tranyót (veszel egyet, amit már datasheet szinten ismersz, és beépíed a dugdosós panelba, amihez nem kell arduinó, csak táp...)

    Szerintem a kettő nem olyan szoros családtag (elektronika-arduino) mint amennyire annak látszik (a programozása sem regiszterszinten megy (assembly), hanem egy "butított" felsőbb nyelv, amit a fordító szépen átdolgoz... Buta egy jószág (egy bizonyos belépő szintig) az arduino (ezért szeretem annyira), de az analóg elektronikai rész, a nyúl végtelen ürege (az arduino-hoz képest). A véleményem teljesen szubjektív, nem kell vele egyetérteni. :))

    Elnézést, ha nem tudtam tanácsot adni, hogy hol vegyél KIT-et, nem láttam ilyet még sehol.

  • Sokimm

    senior tag

    válasz gyapo11 #3306 üzenetére

    "De aki érteni is szeretné..."
    Ki ne szeretné? :) Viszont az Arduino IDE felépítése alá ne nagyon menjen senki (regisztercímzés, inculde fájlok tartalma, sketch), mert beleborzad... (elsőre). Osztom a véleményed azon részét, hogy pár ezer forint füstölés hasznos(abb) lehet, HA:
    -tudjuk mért füstölt el... Elektronikai alapok? Kicsit több annál, mivel az alkatrészek működése (felfutó élek, tüskék, túlfutások, hibatűrő határok) elég komplex, tekintettel, hogy millió egyféle cucc van a piacon.

    Konkrétan amikor kérdeztem az elektronika labor tanáromat, (tételezzük fel, hogy életemben először fogtam akkor kondenzátort), hogy mik ezek a számok a kondin, akkor azt mondta: "nézd meg neten..."

    Aztán amikor láttam, hogy van kerek, lapos, kerámia, fém, műanyag, vastag, kicsi, sok lábú, két lábú, stb stb kondi, elment az étvágyam... Érteni? Képtelenség szerintem, ha nincs egy (és itt megint igazat adok neked) segítőkész szakember mögötted, aki terelget... A net sokszor hasznos (PWM diagramm, tranzisztorkapitány, stb), sőt túlmutatnak a tanári lehetőségeken (mivel 80 oldalról közelítik meg az értelmezést), de sokszor meg nagyok a hézagok...
    (pl: volt egy léptetőmotorom, ami 1.4A 1.7V on üzemelt (egy tekercs tartása), és ugye ez alapján egy 2.38W közeli tápot kerestem... Volt itthon egy, ami hasonló (+-0.05) teljesítményű, de tök más amper/volt arányú... Mért nem használhattam vele? A net nem segített annó, egy türelmes ember többet jelentett volna... :)) )

    Egy szó mint száz: Ez nem "szeretné-nem szeretné" kérdése... Vannak dolgok, amiket nagyon meg kell érteni (alapok), és vannak dolgok, amiket nem kell ahhoz, hogy kimondhassuk: "elég ha működik". A kérdést mindenki magában válaszolja meg... Az alapok 70%-t a netről le lehet szívni, de a maradék 30%-ot szerintem csak egy szakemberrel. Márpedig az a 30% hiány pont elég, hogy ne tudd magadtól megépíteni a kívánt áramköröd. (ötlet megvan, kreativitás megvan, gyakorló füstölésre szánt ellenállások megvannak, de miért füstöl?) (buta példa, elismerem...)

    [ Szerkesztve ]

  • Sokimm

    senior tag

    válasz gyapo11 #3313 üzenetére

    IDE->wiring->sketch->assembly->logikai értékek-elektronikai alkatrészek működése... (a felsorolás pongyola)
    Hogyan villog a led? IDE szinten úgy, hogy HIGH-LOW... Elektronikai rétegben (arduino környezetben (flash-kiolvas, kódsor(IDE->assembly), cpu (regiszterek) feldolgozás, lábakon való billegtetés....eredmény:villogás) irtó sok dolog van, ha tényleg bele akar menni az ember és félek, el menne a kedve a lelkes tanulóknak.

    Az arduino is ezeken a lépcsőkön illeszkedik a világhoz, csak mivel bonyolultabb a vezérlés (egy 555 ic hez képest), még inkább elrettenne bárki, ha "szeretné megérteni" a működést. Ha elektronikai villogást akarunk, akkor meg kerüljük el az arduino-t, mert felesleges bonyolításnak látom a programozást (és minden megértési szükségletét). "Sima" elektronikával, vagy programozással akarok villogtatni ledet? (költői kérdés) Ez alapján mertem azt írni, hogy ne menjen senki (kezdő szintnél) az IDE alá.
    :R
    Ez egy magánvélemény, no offens. A hibás felsorolásokért felelősséget vállalok! :DD

    [ Szerkesztve ]

  • Sokimm

    senior tag

    Sziasztok guruk!
    Nem látom a hibám, kérlek segítsetek. :R A hiba az inu-ban, kommentezve.
    Jah ez egy 7 szegmenses kijelző vezérlése lenne, de nem tudok tovább jutni. :\

    sevensegment.inu:
    #include "sevensegment.h"
    void setup()
    {
    sevensegment kijelzo(7, 9, 11, 8, 10, 6, 12, 13);
    }
    void loop()
    {
    sevensegment.kiir(); // expected unqualified-id before '.' token
    }

    sevensegment.cpp:
    #include "Arduino.h"
    #include "sevensegment.h"
    #include "pins_arduino.h"

    sevensegment::sevensegment(byte f, byte k, byte a, byte bf, byte ba, byte jf, byte ja, byte p)
    {
    pinMode(f, OUTPUT);
    pinMode(k, OUTPUT);
    pinMode(a, OUTPUT);
    pinMode(bf, OUTPUT);
    pinMode(ba, OUTPUT);
    pinMode(jf, OUTPUT);
    pinMode(ja, OUTPUT);
    pinMode(p, OUTPUT);
    }

    void sevensegment::kiir(byte szam)
    {
    switch (szam) {
    case 0:
    Serial.println("anyad");
    break;

    default:

    break;
    }
    }

    sevensegment.h:
    #ifndef sevensegment_h
    #define sevensegment_h
    #include <Arduino.h>

    class sevensegment
    {
    private:

    public:
    //byte f, k, a, bf, ba, jf, ja, p;
    sevensegment(byte f, byte k, byte a, byte bf, byte ba, byte jf, byte ja, byte p);
    void kiir(byte szam);

    };
    #endif

    [ Szerkesztve ]

  • Sokimm

    senior tag

    válasz Janos250 #3380 üzenetére

    Igen igen, a következő lett az eredmény (csak konzolról nem tudom beolvasni az értéket... A switch case-ig nem jut a beolvasott érték. :\)

    sevensegment.ino
    #include "sevensegment.h"

    sevensegment kijelzo(7, 9, 11, 8, 10, 6, 12, 13);

    void setup()
    {
    Serial.begin(9600);
    Serial.println("csak 1-9 kozotti erteket adj meg!");
    }

    void loop()
    {
    kijelzo.kiir(Serial.read());
    delay(500);
    }

    sevensegment.h
    #ifndef sevensegment_h
    #define sevensegment_h
    #include <Arduino.h>

    class sevensegment
    {
    private:
    byte _f; byte _k; byte _a; byte _bf; byte _ba; byte _jf; byte _ja; byte _p;
    public:
    byte szam;
    sevensegment(byte f, byte k, byte a, byte bf, byte ba, byte jf, byte ja, byte p);
    void kiir(byte szam);

    };
    #endif

    sevensegment.cpp
    #include "Arduino.h"
    #include "sevensegment.h"
    #include "pins_arduino.h"

    sevensegment::sevensegment(byte f, byte k, byte a, byte bf, byte ba, byte jf, byte ja, byte p)
    {
    pinMode(f, OUTPUT);
    _f = f;
    pinMode(k, OUTPUT);
    _k = k;
    pinMode(a, OUTPUT);
    _a = a;
    pinMode(bf, OUTPUT);
    _bf = bf;
    pinMode(ba, OUTPUT);
    _ba = ba;
    pinMode(jf, OUTPUT);
    _jf = jf;
    pinMode(ja, OUTPUT);
    _ja = ja;
    pinMode(p, OUTPUT);
    _p = p;
    }

    void sevensegment::kiir(byte szam)//
    {
    switch (szam) {
    case 0:
    Serial.println("nulla");
    break;
    case 1:
    digitalWrite(_jf, LOW);//1
    digitalWrite(_ja, LOW);
    digitalWrite(_f, HIGH);
    digitalWrite(_bf, HIGH);
    digitalWrite(_k, HIGH);
    digitalWrite(_a, HIGH);
    digitalWrite(_ba, HIGH);
    break;
    case 2:
    digitalWrite(_jf, LOW);//2
    digitalWrite(_ja, HIGH);
    digitalWrite(_f, LOW);
    digitalWrite(_bf, HIGH);
    digitalWrite(_k, LOW);
    digitalWrite(_a, LOW);
    digitalWrite(_ba, LOW);
    break;
    case 3:
    digitalWrite(_jf, LOW);//3
    digitalWrite(_ja, LOW);
    digitalWrite(_f, LOW);
    digitalWrite(_bf, HIGH);
    digitalWrite(_k, LOW);
    digitalWrite(_a, LOW);
    digitalWrite(_ba, HIGH);
    break;
    case 4:
    digitalWrite(_jf, LOW);//4
    digitalWrite(_ja, LOW);
    digitalWrite(_f, HIGH);
    digitalWrite(_bf, LOW);
    digitalWrite(_k, LOW);
    digitalWrite(_a, HIGH);
    digitalWrite(_ba, HIGH);
    break;
    case 5:
    digitalWrite(_jf, HIGH);//5
    digitalWrite(_ja, LOW);
    digitalWrite(_f, LOW);
    digitalWrite(_bf, LOW);
    digitalWrite(_k, LOW);
    digitalWrite(_a, LOW);
    digitalWrite(_ba, HIGH);
    break;
    case 6:
    digitalWrite(_jf, HIGH);// 6
    digitalWrite(_ja, LOW);
    digitalWrite(_f, LOW);
    digitalWrite(_bf, LOW);
    digitalWrite(_k, LOW);
    digitalWrite(_a, LOW);
    digitalWrite(_ba, LOW);
    break;
    case 7:
    digitalWrite(_jf, LOW);//7
    digitalWrite(_ja, LOW);
    digitalWrite(_f, LOW);
    digitalWrite(_bf, HIGH);
    digitalWrite(_k, HIGH);
    digitalWrite(_a, HIGH);
    digitalWrite(_ba, HIGH);
    break;
    case 8:
    digitalWrite(_jf, LOW);//8
    digitalWrite(_ja, LOW);
    digitalWrite(_f, LOW);
    digitalWrite(_bf, LOW);
    digitalWrite(_k, LOW);
    digitalWrite(_a, LOW);
    digitalWrite(_ba, LOW);
    break;
    case 9:
    digitalWrite(_jf, LOW);// 9
    digitalWrite(_ja, LOW);
    digitalWrite(_f, LOW);
    digitalWrite(_bf, LOW);
    digitalWrite(_k, LOW);
    digitalWrite(_a, LOW);
    digitalWrite(_ba, HIGH);
    break;

    default:

    break;
    }
    }

  • Sokimm

    senior tag

    Tiszteletem az uraknak!
    Van egy step down konverterem (asszem) (24V to 12V) átalakítóm, amiben található egy EM78P156 IC, és szeretnék hosszútávon gondolkodni (ha bedöglene, mert nem mai darab már a kütyü), ezért arra gondoltam, hogy ki kéne olvasni a rajta levő forráskódot. (hogy pótolni tudjam a jövőben)
    A kérdésem az, hogy mennyire macera ez szerintetek? Ki csinált már ilyet?

  • Sokimm

    senior tag

    válasz Janos250 #7317 üzenetére

    A gyors válaszú PWM és RTM-et (ez utóbbit nem is tudom micsoda), hogyan kell értelmezni?
    Az interrupt megvan, és gyors válaszoláshoz tudom értelmezni, de a másik kettőt nem.
    Az útbaigazítást előre is köszönöm! :R

  • Sokimm

    senior tag

    Sziasztok!
    Elakadtam, és szeretném kikérni a véleményeteket.

    Arduino 1.8.5-el egy NodeMCU-t val játszok, és próbálom külső header file-okra osztani a feladatot (csupán a móka kedvéért), és ha visszatérő érték nélküli utasítást írok, szépen lefut osztály szerű szerkezettel, de ha szeretnék visszatérő értéket is (void nélkül), akkor nem jó.
    cpp file tartalma:
    SZAMOL::osszeadas2 (int A, int B) {
    //ha az összeadas2 elé beteszem az int-et, akkor meg
    //expected unqualified-id before 'int' hibaüzenetet kapok
    //ha nem teszem be, akkor meg:
    //ISO C++ forbids declaration of 'osszeadas2' with no type [-fpermissive]
    int C = A + B;
    return C;
    }

    h file tartalma:
    class SZAMOL {
    int A;
    int B;
    public:

    int osszeadas2 (int A, int B);
    // int szorzas_pivel ();
    };

    A main-be így hívom meg a dolgokat:
    SZAMOL osszeadas2;//példányosítás?
    int A, B;
    A = 1;
    B = 2;
    Serial.print(osszeadas2.osszeadas2(A, B));//végrehajtás

    Amúgy innen lopom a sorokat, és nem értem mi a gond: (első hasznos válaszban a példa kód)
    [link]

    Ha hülyeség a kérdés, jelezzétek mivel pótoljam az információkat, ha kevés az infó, bátran jelezzétek, mindennemű segítséget előre is köszönök! :)

    [ Szerkesztve ]

  • Sokimm

    senior tag

    válasz Tankblock #8693 üzenetére

    Köszönöm a válaszod! Vissza kérdeznék, kommentelek, és kérlek javíts ki ahol tévedek, vagy nem értek valamit! :)

    valami.h:

    #ifndef VALAMI_H_
    #define VALAM_H_

    class SZAMOL {
    private:
    int A;
    int B;
    public:
    SZAMOL(int A, int B); //ez a SZAMOL osztály két input tagja, amit nem lehetne feltenni a
    //class SZAMOL (int A, int B) { mögé?
    int osszeadas2 (int C, int D);
    //ez a SZAMOL osztály egyik metódusa, ami osszadas2 néven fut, és kér két változót?
    };

    Akkor lássunk a .cpp filet:
    #include "valami.h"

    SZAMOL(int A, int B){
    this->A = A; //ezt a this részt nem értem, hogy mit csinál
    this->B = B; // és sajnos az angol forrásokból sem jövök rá az értelmére :(

    }
    int SZAMOL::osszeadas2(int C, int D) { // a SZAMOL osztály osszeadas2 metódusának a valós működését leírjuk itt
    return C+D;
    }



    SZAMOL szamol(3,4); //majd adunk neki valami input értéket... (ez már a loop előtti setup részbe tartozik nem (Arduino strukturára épülve)?)
    //Ez itt a példányosítás? A bemenő inputok (3,4) változnak a main alatt futtatott A és B paraméter értékadása miatt?

    void main()
    {

    int A, B;
    A = 1;
    B = 2;
    Serial.print(szamol.osszeadas2(A, B));
    //A szamol példányon lefuttatjuk az osszeadas2 metódust, az A és B input értékekkel, amit átadunk az osszeadas2 metódusnak, ami (C+D érték végeredményeként kiköpi a megoldást?)

    }

    [ Szerkesztve ]

  • Sokimm

    senior tag

    válasz Janos250 #8695 üzenetére

    A this-t még majd igyekszem megérteni, mert zavar, hogy nem értem, de a hiba meglett!
    Az osztálynak nem adhatok input paraméter igényt, mert az adott metódusa (nem csak egy lehet) majd igényli, hogy most két változós inputot adok, vagy többet (kevesebbet).

    Most szépen lefut, teszi a dolgát, csak nem tudom a szakzsargont, amiatt kérném a korrigálást tőletek!
    (köszönöm a segítséget Tankblock neked is, már működik, cserje/tölgy ide vagy oda. :P )

    pl: (ha nem jó szavakat használok, javítsatok ki bátran, nehogy itt zöldségeket beszéljek! :) )

    asd.h:
    #ifndef ASD_H
    #define ASD_H

    #define PI 3.14

    class SZAMOL {
    private:
    int A;
    int B;
    int C;
    int D;
    public:
    int osszead (int C, int D); //ez az osszad egy metódusa a SZAMOL osztálynak?
    int szorzas_pivel (int A);
    };
    #endif

    asd.cpp:
    #include "asd.h"

    int SZAMOL::osszead(int C, int D) {
    return C + D;
    }
    int SZAMOL::szorzas_pivel (int A){
    return A*PI;
    }

    main:
    SZAMOL szamolpeldany; //itt példányosítok ?
    void Setup (){
    Serial.print(szamolpeldany.osszead(C, D));//majd itt a példányak megadom az input paramétereit? (és kiiratom)
    }

    [ Szerkesztve ]

  • Sokimm

    senior tag

    válasz Tankblock #8705 üzenetére

    Móka ide vagy oda, nem büszkélkedem a tanulmányi papírjaimmal, mert nem illene ilyen buta kérdéseket feltennem vele, de mentségemre legyen:
    A tantárgyak nem összekapcsolódóan vannak felépítve, és attól, hogy egy-egy zh-t teljesítek, nem lesz komplex rálátásom bizonyos dolgokra (csupán az iskola kedvéért).

    Minden ami működik itthon (auto akksi töltő, laser-es fordulatszámmérő fotoellenállással, napkollektoros akksitöltő, stb), az nem az iskolai komplexitás, vagy tananyag miatt megy, pedig több féléven át tanultunk bizonyos tantárgyakat (és ide még a középiskolai fizika és infó is beletartozik, mint "szégyen").

    Tehát a hetes táborok jók, de kapcsold össze őket, és vezesd végig a diákokat EGY projekten (minden ágán, a felsorolt listáddal pl). Különben jövök ismét kérdezni x idő múlva! :DDD

  • Sokimm

    senior tag

    Köszönöm mindenkinek a kellemes visszajelzéseket, igyekszem viszonozni a kedvességeteket, ezért a már működő cuccaimat szívesen megosztom (ha lesz) ilyen ftp, vagy weblap, hátha más is használni tudja majd.

    :R

Új hozzászólás Aktív témák