GabrielM
Vytvořené odpovědi
-
AutorPříspěvky
-
Jerry
ÚčastníkIDE mám 1.8.0.
Kysa
ÚčastníkNevím jestli jsem dobře pochopil, který kód je v arduinu. Protože pokud je to
//POZOR – na verzi Arduino IDE 1.0.5 většinou nejde přeložit,
// prosím, použijte novější verzi 1.0.6, děkuji.
//#include <Wire.h>
#include <LiquidCrystal_I2C.h>//nastavíme adresu a typ displeje
LiquidCrystal_I2C lcd(0x3F,20,4); // nastavení adresy (0x3F) je důležité!!!void setup()
{
lcd.init(); // initializace lcd// Vypíšeme nějaké texty na jednotlivé řádky, adresace je od 0, ne od 1.
lcd.backlight();
lcd.setCursor ( 0, 0 );
lcd.print(“ http://www.santy.cz „);
lcd.setCursor ( 0, 1 );
lcd.print(“ Test LCD 2004 I2C „);
lcd.setCursor ( 0, 2 );
lcd.print(“ Arduino-Home „);
lcd.setCursor ( 0, 3 );
lcd.print(“ http://www.santy.cz „);
}void loop()
{
}`tak tady se používá display 4×20 znaků.
Jerry
ÚčastníkNevím proč je tam definovaných tolik pinů a hlásí mi to chybu při kompilaci
Jerry
ÚčastníkDíky vyzkouším
ArduXPP
ÚčastníkTak pak ještě vyzkoušet tenhle kod :
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>#define I2C_ADDR 0x3F
#define BACKLIGHT_PIN 7
#define En_pin 4
#define Rw_pin 5
#define Rs_pin 6
#define D4_pin 0
#define D5_pin 1
#define D6_pin 2
#define D7_pin 3#define LED_OFF 0
#define LED_ON 1
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);void setup()
{
lcd.begin (16,2); // initialize the lcd
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,NEGATIVE);
lcd.setBacklight(LED_ON);
}void loop()
{// Reset the display
lcd.clear();
delay(1000);
lcd.home();// Print on the LCD
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(„Hello, world!“);
delay(8000);
}Musí se použít knihovna tahle https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads .
Jerry
ÚčastníkTo jsem taky již psal v textu. Převodník nalezen adresa změněna na 0x3F. Pokud se zadá jakákoli jiná adresa modul nereaguje vůbec.
ArduXPP
Účastník#include <Wire.h>
#include <LiquidCrystal_I2C.h>// vytvoří objekt lcd a nastaví jeho adresu
// 0x20 a 16 zanků na 2 řádcích
LiquidCrystal_I2C lcd(0x20,16,2);void setup()
{
lcd.init();// inicializuje displejlcd.backlight(); // zapne podsvětlení
lcd.print(„text“); // vypíše text
}void loop()
{
}Místo 0x20 se dopíše co ukázal skener
ArduXPP
ÚčastníkTak ještě zkusit tohle – http://playground.arduino.cc/Main/I2cScanner
Jerry
ÚčastníkMyslím že ne psal jsem v textu že trimr jsem nastavil že rastr svítí je to vidět i na videích. Je to v podstatě na max.
ArduXPP
ÚčastníkUž se to tu psalo, stačí otočit trimmer. Je ze zadu u toho převodníku.
Chucky77
ÚčastníkTak tady je fotka kol.
Attachments:
Chucky77
ÚčastníkSorry louplo se mě to sem 2x. Holt odesláno z mobilu.
Dodám sem fotky.Chucky77
ÚčastníkTak to jsem také řešil a zatím jsem koupil kolečka z Lega. Při koupi na váhu (v Praze na Plzeňské) vyšlo jedno kolečko na asi 12 Kč. A to jde. Akorát na ty krokáče to bude chtít úpravy.
Pro začátečnickou nezkušenost jsem od krokačů ustoupil. A na stejnosměrný klasiky po dopilovani hřídele pasujou.Ondřej
Odesláno z mého Lenovo P70-A pomocí Tapatalk
rades
ÚčastníkAno, funguje, ale stál mi jakákoliv klávesa píše 0 :/
Zbyšek Voda
ÚčastníkPojďme tedy pokračovat dál 🙂 Koukám na dokumentaci, tak snad ji dobře chápu. (http://playground.arduino.cc/Code/Keypad)
Prozkoumejme pořádně funkci keypadEvent.
void keypadEvent(KeypadEvent eKey){ for (int i =0; i = 5; i++){ admpw[i] = keypad.getState(); Serial.println(admpw[i]); } }
Ta je zavolána kdykoliv, když dojde ke změně stavu klávesy (uvolnění, stisknutí).
Funkce getState() vrací hodnotu podle toho, co se s keypadem děje – vrací hodnoty
IDLE, PRESSED, RELEASED a HOLD. Vy tedy budete ve funkci keypadEvent testovat, jestli je getState() rovna PRESSED a poté zapisovat hodnotu stisknuté klávesy do pole admpw[] na patřičné místo (další v pořadí).Takže bych postupoval následovně: vytvořte si na začátku programu proměnnou
int pos = 0;
, která bude udávat pozici načteného znaku. Při stisknutí tlačítka dojde k uložení stisknutého tlačítka do pole admpw na index pos a navýšení proměnné pos o 1. Musíte si také pohlídat, aby pos měla hodnoty 0 – 4. To se dá zařídit operátorem modulo – %.void keypadEvent(KeypadEvent eKey){ if(keyboard.getState == PRESSED){ admpw[pos] = keyboard.getKey(); pos = (pos + 1) % 5; } }
Takhle by to podle mě mohlo jít 🙂
rades
ÚčastníkTedy, jak zařídit, aby program čekal na stisknutí klávesy a přečetl tak pětimístné heslo?
rades
ÚčastníkKaždopádně stisk jakékoliv klávesy mi nyní vypíše
1
1
1
1
1
3
3
3
3
3
0
0
0
0
0
=> Opět jsem bezradnýrades
ÚčastníkJežiši Kriste! Já jsem fakt debil…
Zbyšek Voda
ÚčastníkDobrý den, ve funkci keypadEvent máte podivnou ukončovací podmínku cyklu for.
Máte tam:for (int i =0; i = 5; i++)
Tedy cyklus probíhá, dokudi = 5
. V každém průchodu se tedy do i přiřadí hodnota 5, je vyhodnocena jako true a cyklus opakuje znova – tedy se zacyklí.Asi je to překlep a chtěl jste napsat
i < 5
🙂Pokud byste chtěl testovat rovnost, tak musíte použít operátor
==
,=
je přiřazení hodnoty do proměnné.posjirka
Účastníkpárkrát jsem něco takového zvažoval a vždy se objevilo něco závažnějšího. jinak klasické časomíry fungují, takže to není neřešitelné. Proč je tam ten bezdrátový přenos?
posjirka
Účastníkjá byhc zkusil toto:
http://www.mikrocontroller.net/attachment/10061/pwm_to_analog.jpg
zkoušel jsem to simulovat a strašně dlouho se to přepočítává = nemám na to čas.
Uvidíme jak budu stíhat v pátek a kdyžtak bych to vyzkoušel naživo …krcmar.tomas@gmail.com
ÚčastníkBlinP, diky vypada to dobre
jeste jsem behem patrani narazil na toto, mam pocit ze to dokonce i chapu, neslo by to pouzit ?
https://www.youtube.com/watch?v=U8G13SpPDfgfinke_tomas
ÚčastníkDobrý den. Děkuji za Vaší odpověď vážim si toho. Vy máte s něčím takovým už zkušenosti? S pozdravem Finke.
krcmar.tomas@gmail.com
ÚčastníkTo Aleš :
Díky, Nejsem z Prahy, ale Kousek, Struhařov u Mnichovic, zatim jezdím nakupovat do gm
To posjirka:
Takže to nemám zkoušet stavět, co byste teda doporučil za obvod na ovládání té klapky?
Díky
posjirka
Účastníknavíc simulace je pouze orientační. Jde to poznat třeba při simulaci multivybrátoru se 2 tranzisotry. Po sepnutí napětí se nerozjede, protože mají oba dva absolutně stejné zesílení, takže se žádný nespustí dřív.
RC čeln jako převodník PWM na analogovou honotu samozřejmě funguje. Jen když si představíte charakteristiku trnazistoru, který při cca 0,7V začne otevýrat a při cca 1,2V je naplno otevřeny, tak tam není moc prostoru pro regulaci v pásmu 0-5V, kterí by se na RC členu nastřádali.
Oldast
ÚčastníkDobrý večer
na seriovém portu to funguje normálně tak jak má,ale displej ukazuje jen hodnoty od 0 nahoru.A zkusím změnit proměnou.Dík.posjirka
Účastníkchlapci nechci vám do toho kecat, ale to co tu ted řešíte nemá nic společného s převodem PWM na analogové napětí. Dejte si do toho zapojení osiloskop a uvidíte co tím myslím. Ten tranzistor je zapojený jako spínač. To znamená, že podle vstupního signálu přizemńuje zátěž. Kondenzátor nemá v podstatě žádný vliv, protože v tomto zapojení není jeho charekteristika lineární a přechází ze stavu rozpojeno do saturace.
Voltmetr měří střední napětí, proto se vám zdá, že to hezky reguluje.
Kdyby zátěž byla v emitoru tranzistoru tak by to možná šlo. V tu chvíli by totiž tranzistor fungoval jako proudový zesilovač a oddělil by RC člen od zátěže … můžete se podívat tu:https://circuits.io/circuits/2285260-pwm-to-analog-nefunkcni
Aleš
ÚčastníkJe to úplně jedno. V tomto zapojení nemá zesilovací činitel žádný vliv. Vy jste z Prahy?
krcmar.tomas@gmail.com
Účastníkdiky moc,
ktery ma pouzit, staci ta 10 lisi se to jenom proudový zesilovací činitel
https://www.gme.cz/bipolarni-tranzistor-bd139-10-to126
https://www.gme.cz/bipolarni-tranzistor-bd139-16-to126dikec
-
AutorPříspěvky