prosím o pomoc s kodem na slider.

Odpovědět
Vendys
Příspěvky: 11
Registrován: 25 dub 2024, 13:27

prosím o pomoc s kodem na slider.

Příspěvek od Vendys »

Ahoj, mam takový dotaz, po pár týdnech jsem zprovoznil slider.
Mám tak nějak sesmolený kod (začátečnický) a potřeboval bych asi pomoct s kódem nevím si s tím rady, a to ještě nemam zapojen Halův senzor atd... Sice mi už jezdí slider z jedné strany na druhou ale zbytek mi nefunguje...

Zapojil jsem display podle návodů,
a display mi funguje jen 1/3 zbytek ne. 1/3 displeje je aktivní a na zbytku jsou čáry... tak ten nevím absolutně co s tím.

Zapojil jsem podle plánku potenciometr s tlačítkem. Nakodoval jsem ho, ale nevím jak ho dokodovat dál aby mi dělal to co potřebuji. Tlačítko mi sice funguje, ale jen když jede na jednu stranu tak když ho zmačknu a držím tak slider se zastaví. Když točím potenciometrem tak se jako rychle vypíná a zapíná. Když slider změní směr tak už potenciometr nefunguje. Chtěl bych aby potenciometr fungoval když budu kroutit na jednu stranu tak bude motor zpomalovat a když na druhou tak zrychlovat. a také pro display pohyb v menu a kliknutím potenciometru potvrzení.

ještě jsem na arduino nepřidělal Halův senzor ale v nejbližších dnech tak snad udělám i když nevím jestli to mam dělat a nebo nejdříve se zaměřit a odstranit chyby co mam a co mi to dělá.

Halův senzor bych chtěl aby vždy na začátku než cokoli začne slider dělat aby dojel k senzoru a označil si nulu. a od té by pak věděl jak má kam jet.

Další problém mam, a nevím jak na to je že motor dojede na jednu nebo na druhou stranu tak tvrdě zastaví a zase se rychle rozjede potřeboval bych udělat nějaké plynulé zpomalení. aby slider na konci a změny směru nebyl tak trhaný. Rád bych vám sem nahrál ten kod co mam a jakkoli budete potřebovat doplnit zapojení do arduino tak vám nafotím popřípadě zakreslím.

Hledám někoho kdo rozumí kódování má čas a chtěl by mi pomoct a rád kóduje. Na kamerovým slideru je zatím jen pohyblivá jedna osa ale chtěl bych časem dodělat i druhou osu respektive vše na to mam ale neumím zprovoznit 1 osu natož potom 2 ale jen to píšu aby se popřípadě vše připravovalo na dvě osy. Asi v Kodu budu mít nějaké fatální chyby ale jsem fakt začátečník proto potřebuji někoho kdo se v tom rád rýpe a chce pomoct... jo a dělam to na Arduino nano

kod vám samozřejmě nahraju jen pro přehlednost nevím jak. myslím že když ho sem jen zkopíruju tak to bude k ničemu hlavně nepřehledné.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1545
Registrován: 16 úno 2013, 14:26

Re: prosím o pomoc s kodem na slider.

Příspěvek od Dex »

Na zdrojáky je tu tlačítko </> (páté zleva) a pak to vypadá nějak takhle:

Kód: Vybrat vše

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}
"all your robots are belong to us"
robodoupe.cz
DavidO
Příspěvky: 1163
Registrován: 01 kvě 2013, 21:27

Re: prosím o pomoc s kodem na slider.

Příspěvek od DavidO »

Kromě toho kódu by bylo dobré, kdybys sem dal schéma zapojení (i fotku) a i seznam součástek nejlíp i s odkazy, protože že nemůžeš rozjet displej, nebo že klikací potenciometr nefunguje jak má, s tím ti těžko dobře poradíme, když nevíme, co konkrétně jsi použil. To můžem leda obecně naznačit, že buď máš špatně program, nebo zapojení, nebo napájení, nebo vadný displej.

Jinak doporučuju si nejdřív sepsat co nejminimalističtější variantu a teprve později přidávat další funkčnosti. A i tu úplně první nejmenší variantu si rozdělit na jednotlivé malé části, ty vyřešit, a pak spojovat, tedy ne snažit se udělat všechno najednou, protože v tom by ses ztratil. Vzhledem k tomu, že ESP můžeš přeprogramovat v podstatě kolikrát chceš (>100 tisíc krát), tak nic nebrání tomu si to postupně zkoušet po malých částech a teprve když ti bude fungovat jedna, zabývat se další a teprv pak to spojovat.

A ještě jeden užitečný postup - před tím, než připojíš hardware, si přes seriák do počítače vypisuj, jak ten hardware nastavuješ (například když rozjíždíš motor, tak mu postupně měníš plnění, takže si vypisuj ty hodnoty). Už jen tím, když se podíváš na čísla, můžeš často uvidět různé chyby. A nezapomeň na nejzákladnější ladící nástroj, LED.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1545
Registrován: 16 úno 2013, 14:26

Re: prosím o pomoc s kodem na slider.

Příspěvek od Dex »

Jak píše David, musíš to rozdělit na zdánlivě banální záležitost a ty pak postupně spojovat dohromady. Jinak jako začátečník nemáš šanci to dát dohromady. A i pak to nebude snadné. Použitelně programovat se prostě za víkend nenaučíš, řada lidí se to nenaučí nikdy. To ovšem neznamená, že bys to neměl minimálně zkusit ;)

Vypisování informací do sériáku vřele doporučuji, bez toho se neobejdou ani profíci. U Arduina je to v podstatě ekvivalent vypisování na monitor.
"all your robots are belong to us"
robodoupe.cz
Vendys
Příspěvky: 11
Registrován: 25 dub 2024, 13:27

Re: prosím o pomoc s kodem na slider.

Příspěvek od Vendys »

Ahoj vše dodám jak jsem psal jen jsem nevěděl jak a co vše budete potřebovat. Nakreslil jsem schéma zapojení. a sepsal jsem díly u něčeho mam i odkazy.
Použité věci
Arduino nano : Arduino Nano V3.0 ATmega328 - Precizní klon, 1x
Procesor: ATmega328
USB převodník: FTDI FT232RL
Verze desky: V3.0
https://dratek.cz/arduino/823-arduino-n ... -klon.html


Rotační enkodér 2 x : Modul rotačního enkodéru pro mikrokontroléry
Typ: KY-040
Pulzů na otáčku: 20
Počet otáček: neomezený
Dlouhá životnost
https://dratek.cz/arduino/837-rotacni-enkoder.html

Hallův senzor: modul KY-024
Specifikace
Provozní napětí: 3,3V - 5V
https://dratek.cz/arduino/7702-halluv-s ... y-024.html

Nepájivé pole 400pinů
https://dratek.cz/arduino/1226-eses-nep ... -pinu.html

Driver pro krokové motory 2 x 4A TB6600
Napájecí napětí: 9 - 42V DC
Maximální proud: 4A
https://dratek.cz/arduino/7899-driver-p ... b6600.html

DC souosý konektor do panelu - 5,5 x 2,1 mm
https://dratek.cz/arduino/34676-dc-jack ... .1-mm.html

Display:
128x64 1,3" OLED displej bílý I2C
Číslo nabídky 12193764199
Kód výrobce2-C-004
TypLCD displej
OLED displej s rozlišením 128x64 a velikostí 1.3". Toleruje široký rozsah napájecího napětí od 3.3V do 5V, což je univerzální pro použití s mnoha mikrokontroléry. Displej komunikuje přes I2C rozhraní.
Displeje vyrobené technologií OLED nemají podsvícení a rozsvítí jednotlivé pixely, což výrazně zlepšuje vizuální efekt a zaručuje pohodlí při čtení při pohledu ze strany na více než 160°. Kvalitní zobrazovací modul.
2 ks O-kroužků
napájecí napětí 3.3V až 5V
barva: bílá
rozlišení: 128x64
úhlopříčka: 1.3" palce
ovladač: SH1106
komunikace: I2C
rozměry: 27mm x 27mm


Krokový motor 1:

1.8 Stepper motor LDO-57STH56-2804A
141109 LDO MOTORS CE

Krokový motor 2: PRO PŘÍPADNOU DRUHOU OSU POHYBU
Stepping Motor Model:17HS4023 LOT NO:20240117
Krokový motor NEMA17 17HS4023 42mm 3d CNC tisk
Kód výrobce2-K-012
model: 17HS4023
Typ: bipolární dvoufázový
Napájecí napětí: 12V
Proud: 700mA na fázi
Krok: 1.8° (200 kroků na plné otočení)
Upínací moment: 0.16Nm
Průměr osy: 5mm
a sním mam druhý driver Rotační enkodér :Tento driver mam dvakrát stejný pro oba motory.

Pak ruzný propojovací materiál (drátky)

Zde mam funkční kod ale bez kodu na display protože ten mi stejně nefungoval mam zde napůl funkční potenciometr 1 a jinak mi motor chodí z jedné strany na druhou. a já bych potřeboval to ovlivnovat jak rychlost , tak aby to mělo plynulý rozjezd a dojezd. Pak bych tam potřeboval zapojit ten halův senzor a aby to k němu na začátku přijelo a našlo si tu svou nulu na ose a od té by to jezdilo a nebouralo do konců

Samozřejmě když bude ještě cokoli potřeba doplním.

Kód: Vybrat vše

int PUL = 5; 
int DIR = 2;
int ENA = 3; 
// Rotační enkodér KY-040
// proměnné pro nastavení propojovacích pinů
int pinCLK = 8;
int pinDT  = 7;
int pinSW  = 6;
// proměnné pro uložení pozice a stavů pro určení směru
// a stavu tlačítka
int poziceEnkod = 0;
int stavPred;
int stavCLK;
int stavSW;


void setup() {
  pinMode(PUL, OUTPUT);
  pinMode(DIR, OUTPUT);
  pinMode(ENA, OUTPUT);

  digitalWrite(ENA, LOW);
// Rotační enkodér KY-040
  // komunikace přes sériovou linku rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení propojovacích pinů jako vstupních
  pinMode(pinCLK, INPUT);
  pinMode(pinDT, INPUT);
  // nastavení propojovacího pinu pro tlačítko
  // jako vstupní s pull up odporem
  pinMode(pinSW, INPUT_PULLUP);
  // načtení aktuálního stavu pinu CLK pro porovnávání
  stavPred = digitalRead(pinCLK);  
}

void loop() {
  digitalWrite(DIR, LOW);
  delay(1000);  //délka mezery mezi změnama směru
  for (int i = 0; i < 33000; i++) //chod v před 5000 kroků
  {
    digitalWrite(PUL, HIGH);
    delayMicroseconds(100);  // rychlost motoru 
    digitalWrite(PUL, LOW);
    delayMicroseconds(100);  // rychlost motoru 
  }
  
  digitalWrite(DIR, HIGH);
  delay(1000);  //délka mezery mezi změnama směru
  for (int i = 0; i < 33000; i++) //zpětný chod 5000 kroků
  {
    digitalWrite(PUL, HIGH);
    delayMicroseconds(100);  // rychlost motoru 
    digitalWrite(PUL, LOW);
    delayMicroseconds(100);  // rychlost motoru 

// Rotační enkodér KY-040
    // načtení stavu pinu CLK
  stavCLK = digitalRead(pinCLK);
  // pokud je stav CLK odlišný od předchozího měření,
  // víme, že osa byla otočena
  if (stavCLK != stavPred) {
    // pokud stav pinu DT neodpovídá stavu pinu CLK,
    // byl pin CLK změněn jako první a rotace byla
    // po směru hodin, tedy vpravo
    if (digitalRead(pinDT) != stavCLK) {
      // vytištění zprávy o směru rotace a přičtení
      // hodnoty 1 u počítadla pozice enkodéru
      Serial.print("Rotace vpravo => | ");
      poziceEnkod ++;
    }
    // v opačném případě, tedy pin DT byl změněn
    // jako první, se jedná o rotaci
    // proti směru hodin, tedy vlevo
    else {
      // vytištění zprávy o směru rotace a odečtení
      // hodnoty 1 u počítadla pozice enkodéru
      Serial.print("Rotace vlevo  <= | ");
      poziceEnkod--;
    }
    // vytištění aktuální hodnoty pozice enkodéru
    Serial.print("Pozice enkoderu: ");
    Serial.println(poziceEnkod);
  }
  // uložení posledního stavu pinu CLK
  // jako reference pro další porovnávání
  stavPred = stavCLK;
  // načtení stavu pinu SW - tlačítko
  stavSW = digitalRead(pinSW);
  // v případě stisknutí vytiskni informaci
  // po sériové lince
  if (stavSW == 0) {
    Serial.println("Stisknuto tlacitko enkoderu!");
    delay(500);
    }
  }
}
Přílohy
ELEKTRO ARDUINUm.jpg
DavidO
Příspěvky: 1163
Registrován: 01 kvě 2013, 21:27

Re: prosím o pomoc s kodem na slider.

Příspěvek od DavidO »

Hromadu mouder najdeš tady na hlavním webu robodoupe.cz, Konkrétně třeba v seriálu Krokohrátky s Arduinem, pro enkodér ve článku Jak na enkodéry. Taky doporučuju podívat se na knihovnu AccelStepper, pomocí které ty dva motory snadno uřídíš i s rozjížděním a zastavováním; českou dokumentaci jsme zveřejnili v časopise DPS v seriálu Mechatronika (články jsou online zdarma, o motorech je díl 2, tam je odkaz na tu dokumentaci, českou dokumentaci ke knihovně Encoder najdeš v díle 3).

Hallovku použiješ jako běžný digitální vstup (akorát si tím trimrem musíš nastavit správnou citlivost, ale to není nijak kritický, to uvidíš snadno, když si (viz můj předchozí příspěvek) uděláš skriptík, který pouze bude nastavovat LED podle toho, co je na nějakém digitálním vstupu a budeš tím šmrdlat sem a tam).

Displej neznám, ale na dva kliky a dvě Ctrl+C a Ctrl+V vidím český eshop co ho nabízí: 1.3" 128x64 OLED displej, I2C, bílý , tam nějaklé info najdeš. Kdyby to nestačilo, gůgluj popis k řadiči SH1106.

Kromě toho, buď VELMI opatrný ohledně časových zpoždění (delay je zlo) a JEŠTĚ VÍC ohledně posílání čehokoli po seriové lince - vidím, že v kódu máš inicializaci na 9600 Bd (šmárijápanno... no ale co nadělám, na iternetu je hromada hnoje, no), takže to ti přenos každého jediného znaku sežere celou milisekundu, po kterou by procesor mohl dělat něco rozumnějšího, třeba spát, nebo kouknout, jestli jsi náhodou nezatočil potenciometrem rotačním enkodérem, nebo nezmáčkl jeho čudlik a ještě přitom tiknul motorům, aby jely hladce. Aspoň si to prosímtě nastav na 115200, to ti i to Nano s prstem v nose spolehlivě vysmrkne; bude to 10x rychlejc a nebude se to chovat jako běžný čínský rádio "mačkám tlačítka a furt nic, a pak najednou třikrát hlasitějc".
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Uživatelský avatar
JPLABS
Příspěvky: 42
Registrován: 13 čer 2023, 22:45
Kontaktovat uživatele:

Re: prosím o pomoc s kodem na slider.

Příspěvek od JPLABS »

Jak psali nahoře, je potřeba software rozdělit na bloky, na banální jednoduché bloky a ty testovat.
A za druhé, jestli software má pracovat s hardware, je nutno dát informace o hardware. Jinak ti těžko někdo pomůže.
A za třetí, já pod pojmem "programování" chápu vytvoření algoritmu, logického, matematického popsaného vývojovým diagramem. Tak jsme to dělali u firem v Anglii, kde jsme dělali měřící přístroje řízené procesory. Bohužel, v Česku, kde se všechno flinká, se pod pojmem "programování" rozumí patlání kódů z hlavy. Tak nedivte se, že pak programy nefungují. Viz můj komentář zde: http://www.jplabs.co.uk/cz/programovani.html
DavidO
Příspěvky: 1163
Registrován: 01 kvě 2013, 21:27

Re: prosím o pomoc s kodem na slider.

Příspěvek od DavidO »

JPLABS píše: 29 kvě 2024, 12:58 Bohužel, v Česku, kde se všechno flinká, se pod pojmem "programování" rozumí patlání kódů z hlavy. Tak nedivte se, že pak programy nefungují. Viz můj komentář zde: http://www.jplabs.co.uk/cz/programovani.html
Fakt?

Hm.

Asi jsem v jiným Česku.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
DavidO
Příspěvky: 1163
Registrován: 01 kvě 2013, 21:27

Re: prosím o pomoc s kodem na slider.

Příspěvek od DavidO »

JPLABS píše: 29 kvě 2024, 12:58 A za druhé, jestli software má pracovat s hardware, je nutno dát informace o hardware. Jinak ti těžko někdo pomůže.
Viz příspěvek z 27 kvě 2024, 00:45, asi ti unikl.

Jestli chceš Vendysovi pomoct, tak piš něco konstruktivního. Jestli ne, tak radši nic nepiš.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Vendys
Příspěvky: 11
Registrován: 25 dub 2024, 13:27

Re: prosím o pomoc s kodem na slider.

Příspěvek od Vendys »

Ahoj jo přesně od Vendys » 27 kvě 2024, 01:45 jsem to tam vše rozepsal hardware a vše tak jak jste mi napsali ta první zpráva byla právě jen zeptat se co je potřeba a jak nejlépe a pak jsem to tam by psal myslím si že podrobně i jsem nakreslil schéma.
Pokud mi tedy s programováním budeš chtít pomoct tak proč ne. Nemyslím si že v česku jen lepí kod. Myslím si že tady budou lidi kteří tomu budou rozumět. Já ja ne já budu ten co ten kod lepí a budu rád když to slepím. protože tomu absolutně nerozumím a myslel jsem si že to bude daleko jednodušší takhle prostě tápu. ale já se taky nepovažuji za profíka ale v tomhle za naprostého laika. myslel jsem si že si koupím arduino display atd. stáhnu si kod podle jednoho youtube videa a pujde mi to a bohužel on to nefunguje a já prostě sháním pomoct. protože ten slider potřebuji.
Takže pokud se najde osoba co by mě ala nějaký čas a pomohla mi jakkoliv slepit zbastlit a jakkoli vytvořit ten kod tak budu hrozně vděčný abych mohl dělat záběry ze slideru. pak se budu klidně učit arduino a dělat.
Pokud ale nečteš co jsem napsal tak je to asi jedno...

JPLABS píše: 29 kvě 2024, 12:58 Jak psali nahoře, je potřeba software rozdělit na bloky, na banální jednoduché bloky a ty testovat.
A za druhé, jestli software má pracovat s hardware, je nutno dát informace o hardware. Jinak ti těžko někdo pomůže.
A za třetí, já pod pojmem "programování" chápu vytvoření algoritmu, logického, matematického popsaného vývojovým diagramem. Tak jsme to dělali u firem v Anglii, kde jsme dělali měřící přístroje řízené procesory. Bohužel, v Česku, kde se všechno flinká, se pod pojmem "programování" rozumí patlání kódů z hlavy. Tak nedivte se, že pak programy nefungují. Viz můj komentář zde: http://www.jplabs.co.uk/cz/programovani.html
Odpovědět