Filament Meter

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
schusterji
Příspěvky: 7
Registrován: 26 kvě 2018, 23:27
Reputation: 0

Filament Meter

Příspěvek od schusterji » 26 kvě 2018, 23:37

Zdravím, pokouším se překompilovat tento soubor:
https://www.thingiverse.com/thing:2904046
Je určený pro čip ATTiny85, chtěl bych použít desku Arduino Nano. Protože jsem úplný začátečník, nějak se mi to nevede...
Jedná se o jednoduché počítadlo délky filamentu pro 3D tiskárnu. Pomůže někdo?
Předem děkuji.

Uživatelský avatar
SkullKeep
Příspěvky: 290
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Filament Meter

Příspěvek od SkullKeep » 27 kvě 2018, 11:38

Zkus tohle snad to pojede je to uprava pro Nano.

Kód: Vybrat vše

#include "U8x8lib.h"
#define inter 6 //interrupt PIN
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8( 8, 7, 9);// 8-clock PIN ,7- data PIN ,9-reset PIN

int pulse = 0;

void setup() {
  pinMode(inter, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(inter), stopa, CHANGE);
  u8x8.begin();
}

void loop() {
  u8x8.setFont(u8x8_font_victoriabold8_r);
  u8x8.drawString(1, 2, "Reset and drag");
  u8x8.setCursor(1, 4);
  u8x8.print(" fillament ");
  u8x8.setCursor(2 , 6);
  u8x8.print("cm: ");
  u8x8.setCursor(8, 6);
  u8x8.print(pulse / 3.53);
}

void stopa()
{
  pulse = pulse + 1;
}
:twisted: :?: :arrow: :geek: P. Q. M.

schusterji
Příspěvky: 7
Registrován: 26 kvě 2018, 23:27
Reputation: 0

Re: Filament Meter

Příspěvek od schusterji » 27 kvě 2018, 15:40

Díky!!! Funkční!!!

schusterji
Příspěvky: 7
Registrován: 26 kvě 2018, 23:27
Reputation: 0

Re: Filament Meter

Příspěvek od schusterji » 27 kvě 2018, 18:34

Předčasná radost, kompilace OK, displej OK, ale impulzy to nepočítá(délku)..... :roll: :roll:

AstroMiK
Příspěvky: 593
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Filament Meter

Příspěvek od AstroMiK » 27 kvě 2018, 18:53

Arduino Nano má interrupt piny 2 a 3. Takže pin 6 fungovat nebude.
Pak by ještě ta přičítací proměnná měla být "volatile int".

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Filament Meter

Příspěvek od rejze69 » 27 kvě 2018, 19:12

Vůbec to nepočítá, nebo to je nesprávný výsledek? Jak je konstruovaný snímač impulsů? Máš to připojeno na pin interrupt? Uno a Nano by měly mít pin 2 a 3. A místo pulse = pulse +1 by mělo stačit pulse ++
Teď si nejsem jist, ale volba CHANGE při přerušení počítá jakoukoli změnu, takže to bude nejspíš počítat 2 pulsy na otáčku.
Pokud je to celý kód nemáš přerušení povolené. Implicitně je zakázané a povolí se voláním interrupt().
Naposledy upravil(a) rejze69 dne 27 kvě 2018, 19:33, celkem upraveno 1 x.

schusterji
Příspěvky: 7
Registrován: 26 kvě 2018, 23:27
Reputation: 0

Re: Filament Meter

Příspěvek od schusterji » 27 kvě 2018, 19:18

Jo,jo, piny 2 nebo 3 fungují. Zatím jsem připojil jen tlačítko+PULLUP odpor. Je pravda, že počítá sepnutí i rozepnutí

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Filament Meter

Příspěvek od rejze69 » 27 kvě 2018, 19:47

Pullup rezistor máš povolenej u input, tak by externi neměl být potřeba. Jestli chceš počítat jen náběžnou hranu použij místo CHANGE příkaz RISING jestli sestupnou FALLING. K tomu bych si vygooglil něco o debouncingu kvůli zákmitům tlačítka. Jestli je ale snímač bezkontaktní pak to nebudeš po pokusech s tlačítkem potřebovat.

schusterji
Příspěvky: 7
Registrován: 26 kvě 2018, 23:27
Reputation: 0

Re: Filament Meter

Příspěvek od schusterji » 27 kvě 2018, 20:14

OK, díky všem. Až bude vše jak má být (opto čidlo,atd), napíšu jak to dopadlo .

schusterji
Příspěvky: 7
Registrován: 26 kvě 2018, 23:27
Reputation: 0

Re: Filament Meter

Příspěvek od schusterji » 17 čer 2018, 12:46

Tak se po zkouškách s optozávorou znovu vracím. Vše funguje, ale má to chybu v tom, že to registruje oba směry, takže to vlastně počítá impuls i při zatažení zpět. Je mi jasné, že by to chtělo optozávory dvě aby byl rozlišen směr. Jako jednodušší mě napadl rotační enkodér a na jeho hřídel namontovat kolečko přímo. Nevím ale jak bych upravil program...... :shock:

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů