Fórum témák
- • 3D nyomtatás
- • Internetes rádióvevő
- • Felajánlás, azaz ingyen elvihető
- • Akkumulátor töltő
- • Elektronikai témájú könyvek újságok
- • Rádióamatőrök topikja
- • LED szalag
- • Klíma szervizelés, javítás
- • TDA7294 végerősítő
- • Háromfázisú aggregátor
- • Elfogadnám, ha ingyen elvihető
- • Nagyfeszültségű tápegység
- • Szintetizátor javítás
- • Alternativ HE találkozó(k)
- • Kondenzátor
- • Dobozolási technikák, műszerdobozok
- • Boombox javítás
- • Sütő javítás
- • Erősítő mindig és mindig
- • Arduino
- • Mosógép vezérlők és általános problémáik
- • Számítógép hiba, de mi a probléma?
- • Hangszórójavítás (otthon)
- • Laptop javítás, tuning
- • Elektromos távirányítós kapunyitó
- • Autós erősítős kérdések, problémák
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Villanymotor
- • Vegyes barkácsfogások
- • Digitális óra
- • Hűtőgép probléma
- • TV hiba, mi a megoldás?
- • Szünetmentes táp javítása, élesztése
- • Erősítő építése elejétől a végéig
- • Műhelyünk felszerelése, szerszámai
- • Kombikazán működési hiba
- • Függvénygenerátor építése
- • SMD, mi a típusa?
- • Hibrid erősítő
- • Suzuki Swift elektronika
- • Videomagnó problémák
- • Általános antennás kérdések, válaszok
- • Érdekességek
- • STK erősítők javítások
- • DC-DC konverter max. kapacitív terhelése
- • Audiofil, High End Audio
- • Központi fűtés (vezérlés)
- • IMI villanymotor
- • Borhűtő vezérlő panel
- • Androidos okos telefonok
- • Klíma beszerelése, fűtés-hűtés házilag
- • Súlymérés
- • Varrógép elektronika
- • Analóg oszcilloszkóp javítása
- • Videoton EA-7386-s erösítő
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Ha a "gyerek elektromos rollere" egy xiaomi M365, akkor jó kapcsolást választottál. A kijelző problémára a megoldás, ha a megfelelő kijelzőt használod, egyéb esetben a programot át kell írnod, ami valószínűleg elég nehezen menne, ha a programfeltöltésről kérdezel.
Igen, a roller egy M365. Kijelzőt akkor szerzek egy megfelelőt, ám ettől a progi még nem ugrott bele a chipbe. Ha ebben tudnál segíteni - vagy valaki - néhány mondatban az jó lenne. Gondolom nem egy nagy ördöngősség, de teljes sötét vagyok hozzá.
Köszi. A hozzászólás módosítva: Aug 19, 2020
Van róla kép a linkelt oldalon (fordítsd le google-val, ha nem megy az angol), amikor egy USB-soros átalakítót köt a mini pro-ra. De ha akarod, használj nano-t.
Hardveresen ősszeraktam, csakhogy a Githubról mit , hova, hogyan?
Hello!
Ha nem foglakoztál még ilyennel akkor most nagy fába vágtad a fejszédet de nem lehetetlen feladat.
1, kell egy laptop vagy asztali pc (a telefon meg hasonló sz@rok felejtősek)
2, töltsd le az arduinó ide-t itt van. (meg kell állapítani hogy az op rendszeredhez jó-e
3, meg kell határozni az usb chippet. Ha ch 340 akkor a lap tetején levő sárga csíknál letölthető
ha egyéb csipp van rajta akkor az ahhoz valót kell letölteni majd telepíteni
4, pc-re felrak arduino IDE, elindít
5 be kell állítani az eszközöknél az arduino tipusát pl arduino nano
6, majd szintén eszközöknél a port számát
7, le kell tölteni a downloaddal a githubról a file.t
8. ki kell csomagolni mert tömörített file
8, meg kell keresni a M365.ino file-t
10, meg kell nyitni az arduino programba
11, imádkozni kell hogy minden úgy legyen ahogy a szerző is csinálta
12 ha hardveresen meg szoftveresen is minden ok akkor arduino ide bal felső sarokba van egy jobbra mutató nyíl azzal kell feltölteni és kész
de ha jól látom itt valami orosz írásról is szó van de ebbe nem merültem bele
A kijelzővel kapcsolatban írok. Ha SSD1306-os meghajtója van a kijelződnek, akkor nem lehetetlen, hogy átalakítsd I2C kommunikációra. Az adatlapjában megtalálod, hogy hogyan kell a kivezetéseket kötni. Maga a meghajtó chip több fajta kommunikációt támogat, a bekötéstől függ, hogy melyik fog működni.
Fel tudok ajánlani még egy 1,3" kijelző modult, amin a kijelző üveg elrepedt, de az alaplap I2C-s. A 31 pólusú csatlakozó átforrasztása nem egyszerű, de ha van kedved megpróbálni, szívesen odaadom.
Köszi, de akkor már veszek egy újat.
Sziasztok! Lenne egy kérdésem load cellnek hogyan állítsam be, hogy melyik lábra van csatlakoztatva? Próbáltam a képen látható módszerrel de arra hibát hoz.
A void setup résznél kell beállitani a lábakat. PL pinMode (A1, INPUT); vagy amire épp szükséged van. Bár ha jól látom itt könyvtárra vagy valami másra panaszkodik a fordító A hozzászólás módosítva: Aug 20, 2020
Köszönöm a segítséget most már működik, egy probléma van még vele, hogy (Egy italkeverőről van szó egyébként,aminek a lényege, hogy az arduino 8 relét működtessen) ha csak egy italnál állítok be mennyiséget a többinél nulla, akkor is végig kapcsolgatja mind a 8 relét amit értek is,hogy miért.
De nekem az kellene, hogy csak az a relé húzzon meg amire én beállítottam x mennyiséget.
(Remélem érthető amit írtam)
A kérdés, hogy mit kellene változtatni a programban? A választ előre is köszönöm.
#include<LCD.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define DOUT A0 // DT
#define CLK A1 // SCK
#define clk 2
#define dt 3
#define sw 4
#define in1 5
#define in2 6
#define in3 7
#define in4 8
#define in5 9
#define in6 10
#define in7 11
#define in8 12
#define in9 13
volatile boolean TurnDetected;
volatile boolean up;
bool doonce = 0;
char screen = 0;
boolean changestate = 0;
long weight;
int pump1ml = 0;
int pump2ml = 0;
int pump3ml = 0;
int pump4ml = 0;
int pump5ml = 0;
int pump6ml = 0;
int pump7ml = 0;
int pump8ml = 0;
void isr0 () {
TurnDetected = true;
up = (digitalRead(clk) == digitalRead(dt));
}
void setup() {
scale.begin(DOUT, CLK);
scale.set_scale();
scale.tare(); //Reset the scale to 0
lcd.begin(16, 2);
pinMode(sw, INPUT_PULLUP);
pinMode(clk, INPUT);
pinMode(dt, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);
pinMode(in7, OUTPUT);
pinMode(in8, OUTPUT);
pinMode(in9, OUTPUT);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(in5, LOW);
digitalWrite(in6, LOW);
digitalWrite(in7, LOW);
digitalWrite(in8, LOW);
digitalWrite(in9, LOW);
attachInterrupt (0, isr0, RISING);
}
void loop() {
if (TurnDetected) {
delay(600);
doonce = 0;
if (changestate == 0) {
if (up) {
screen++;
if (screen > 8) {
screen = 8 ;
}
}
else {
screen = screen - 1;
if (screen < 0) {
screen = 0;
}
}
}
else {
if (up) {
switch (screen) {
case 0: pump1ml = pump1ml + 10;
break;
case 1: pump2ml = pump2ml + 10;
break;
case 2: pump3ml = pump3ml + 10;
break;
case 3: pump4ml = pump4ml + 10;
break;
case 4: pump5ml = pump5ml + 25;
break;
case 5: pump6ml = pump6ml + 25;
break;
case 6: pump7ml = pump7ml + 25;
break;
case 7: pump8ml = pump8ml + 10;
break;
}
}
else {
switch (screen) {
case 0: pump1ml = pump1ml - 10;
break;
case 1: pump2ml = pump2ml - 10;
break;
case 2: pump3ml = pump3ml - 10;
break;
case 3: pump4ml = pump4ml - 10;
break;
case 4: pump5ml = pump5ml - 25;
break;
case 5: pump6ml = pump6ml - 25;
break;
case 6: pump7ml = pump7ml - 25;
break;
case 7: pump8ml = pump8ml - 10;
break;
}
}
}
TurnDetected = false;
}
if (digitalRead(sw) == LOW) {
delay(600);
changestate = !changestate;
doonce = 0;
}
if (screen == 0 && doonce == 0) {
lcd.clear();
lcd.print("Vodka");
lcd.setCursor(0, 1);
lcd.print(pump1ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 1 && doonce == 0) {
lcd.clear();
lcd.print("Jager");
lcd.setCursor(0, 1);
lcd.print(pump2ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 2 && doonce == 0) {
lcd.clear();
lcd.print("Vorosbor");
lcd.setCursor(0, 1);
lcd.print(pump3ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 3 && doonce == 0) {
lcd.clear();
lcd.print("Rose bor");
lcd.setCursor(0, 1);
lcd.print(pump4ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 4 && doonce == 0) {
lcd.clear();
lcd.print("Narancs");
lcd.setCursor(0, 1);
lcd.print(pump5ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 5 && doonce == 0) {
lcd.clear();
lcd.print("Cola");
lcd.setCursor(0, 1);
lcd.print(pump6ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 6 && doonce == 0) {
lcd.clear();
lcd.print("Bodza");
lcd.setCursor(0, 1);
lcd.print(pump7ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 7 && doonce == 0) {
lcd.clear();
lcd.print("Whiskey");
lcd.setCursor(0, 1);
lcd.print(pump8ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 8 && doonce == 0) {
lcd.clear();
if (changestate == 0) {
lcd.print("Start?");
doonce = 1;
}
else {
lcd.print("Wait!");
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 1 ON");
digitalWrite(in1, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump1ml);
lcd.print("ml");
delay((pump1ml/11)*1000);
digitalWrite(in1, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 2 ON");
digitalWrite(in2, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump2ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in2, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 3 ON");
digitalWrite(in3, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump3ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in3, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 4 ON");
digitalWrite(in4, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump4ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in4, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 5 ON");
digitalWrite(in5, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump5ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in5, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 6 ON");
digitalWrite(in6, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump2ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in6, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 7 ON");
digitalWrite(in7, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump2ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in7, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 8 ON");
digitalWrite(in8, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
lcd.clear();
lcd.print(pump3ml);
lcd.print("ml");
delay((pump3ml/12)*1000);
digitalWrite(in8, HIGH);
digitalWrite(in9, LOW);
delay(2000);
changestate = 0;
}
}
}
Mod: Kérjük, hogy használd a Kód beillesztést, erre való! A hozzászólás módosítva: Aug 21, 2020
Moderátor által szerkesztve
Helló!
Nem néztem annyit a kódodat, de szerintem ez:
lcd.clear();
lcd.print(pump2ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in2, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 3 ON");
digitalWrite(in3, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
futtatja minden esetben a szelepeket nem? Ha igen akkor ezeket egy If-be kell tenned.
if (valtozo_ami_eldnti_hogy_kell_e !=0)
és ide amiket bemásoltam fentebb. A lényeg az, hogy csak akkor fusson le, ha pl. a változód nem nulla (ha ez a változód pl integer típus.)
Azt nem látom, hogy ez nálad most melyik változó.
És honnan lehet megtudni, hogy mennyi a változó?
Nem látom én sem, de ekkor fel kell venni annyi plusz byte változót, mint amennyi ital van.
int pump6ml = 0;
int pump7ml = 0;
int pump8ml = 0;
byte vodka=0;
byte vorosbor=0;
stb..
;
Majd minden egyes helyen, ahol eldől, hogy kéri az adott terméket vagy sem, mint pl itt, 1-re billented az értéket. Ezzel lehet majd az if-el játszani később.:
if (screen == 0 && doonce == 0) {
''Én írtam:
vodka=1;
lcd.clear();
lcd.print("Vodka");
lcd.setCursor(0, 1);
lcd.print(pump1ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
''Esetleg itt is meg kell nézni, hogy ha változtat, akkor a vodka=0; sor kell- e bele..
}
doonce = 1;
}
Ezek után, ahol kiadja a piát, miután ki is adta, ki kell nullázni majd!!!
pl:
'Nem tudom, hogy ez a kódrészlet adja ki a vodkát, csak példa:
if (vodka==1)
{
lcd.clear();
lcd.print(pump2ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in7, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 8 ON");
digitalWrite(in8, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
vodka=0; 'Ki kell nullázni, nehogy mégegyszer belefusson az if-be, ha nem is kérik
}
Érdemesebb lett volna szétszedni az egész kódot függvényekre, de így is jó lehet. A kódodat max 3x olvastam, lehet nem is jó amit írtam, de ilyesmi kell neked szerintem. A hozzászólás módosítva: Aug 21, 2020
Megcsináltam mindnél le is fordította, de viszont mikor elindítom a keverést csak az első italnál csinálja azt,hogy ha nullán van akkor ne kapcsoljon be. A többinél ugyan úgy végigfut és sorba megy hiába van 0 ra állítva.
#include<LCD.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define DOUT A0 // DT
#define CLK A1 // SCK
#define clk 2
#define dt 3
#define sw 4
#define in1 5
#define in2 6
#define in3 7
#define in4 8
#define in5 9
#define in6 10
#define in7 11
#define in8 12
#define in9 13
volatile boolean TurnDetected;
volatile boolean up;
bool doonce = 0;
char screen = 0;
boolean changestate = 0;
long weight;
int pump1ml = 0;
int pump2ml = 0;
int pump3ml = 0;
int pump4ml = 0;
int pump5ml = 0;
int pump6ml = 0;
int pump7ml = 0;
int pump8ml = 0;
byte Vodka = 0;
byte Jager = 0;
byte Vorosbor = 0;
byte Rosebor = 0;
byte Narancs = 0;
byte Cola = 0;
byte Bodza = 0;
byte Whisky = 0;
void isr0 () {
TurnDetected = true;
up = (digitalRead(clk) == digitalRead(dt));
}
void setup() {
scale.begin(DOUT, CLK);
scale.set_scale();
scale.tare(); //Reset the scale to 0
lcd.begin(16, 2);
pinMode(sw, INPUT_PULLUP);
pinMode(clk, INPUT);
pinMode(dt, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);
pinMode(in7, OUTPUT);
pinMode(in8, OUTPUT);
pinMode(in9, OUTPUT);
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, HIGH);
digitalWrite(in5, HIGH);
digitalWrite(in6, HIGH);
digitalWrite(in7, HIGH);
digitalWrite(in8, HIGH);
digitalWrite(in9, LOW);
attachInterrupt (0, isr0, RISING);
}
void loop() {
if (TurnDetected) {
delay(600);
doonce = 0;
if (changestate == 0) {
if (up) {
screen++;
if (screen > 8) {
screen = 8 ;
}
}
else {
screen = screen - 1;
if (screen < 0) {
screen = 0;
}
}
}
else {
if (up) {
switch (screen) {
case 0: pump1ml = pump1ml + 10;
break;
case 1: pump2ml = pump2ml + 10;
break;
case 2: pump3ml = pump3ml + 10;
break;
case 3: pump4ml = pump4ml + 10;
break;
case 4: pump5ml = pump5ml + 25;
break;
case 5: pump6ml = pump6ml + 25;
break;
case 6: pump7ml = pump7ml + 25;
break;
case 7: pump8ml = pump8ml + 10;
break;
}
}
else {
switch (screen) {
case 0: pump1ml = pump1ml - 10;
break;
case 1: pump2ml = pump2ml - 10;
break;
case 2: pump3ml = pump3ml - 10;
break;
case 3: pump4ml = pump4ml - 10;
break;
case 4: pump5ml = pump5ml - 25;
break;
case 5: pump6ml = pump6ml - 25;
break;
case 6: pump7ml = pump7ml - 25;
break;
case 7: pump8ml = pump8ml - 10;
break;
}
}
}
TurnDetected = false;
}
if (digitalRead(sw) == LOW) {
delay(600);
changestate = !changestate;
doonce = 0;
}
if (screen == 0 && doonce == 0) {
Vodka = 1;
lcd.clear();
lcd.print("Vodka");
lcd.setCursor(0, 1);
lcd.print(pump1ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 1 && doonce == 0) {
Jager = 1;
lcd.clear();
lcd.print("Jager");
lcd.setCursor(0, 1);
lcd.print(pump2ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 2 && doonce == 0) {
Vorosbor = 1;
lcd.clear();
lcd.print("Vorosbor");
lcd.setCursor(0, 1);
lcd.print(pump3ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 3 && doonce == 0) {
Rosebor = 1;
lcd.clear();
lcd.print("Rose bor");
lcd.setCursor(0, 1);
lcd.print(pump4ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 4 && doonce == 0) {
Narancs = 1;
lcd.clear();
lcd.print("Narancs");
lcd.setCursor(0, 1);
lcd.print(pump5ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 5 && doonce == 0) {
Cola = 1;
lcd.clear();
lcd.print("Cola");
lcd.setCursor(0, 1);
lcd.print(pump6ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 6 && doonce == 0) {
Bodza = 1;
lcd.clear();
lcd.print("Bodza");
lcd.setCursor(0, 1);
lcd.print(pump7ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 7 && doonce == 0) {
Whisky = 1;
lcd.clear();
lcd.print("Whiskey");
lcd.setCursor(0, 1);
lcd.print(pump8ml);
lcd.setCursor(3, 1);
lcd.print("ml");
if (changestate == 0) {
lcd.setCursor(9, 0 );
lcd.print("Change?");
}
doonce = 1;
}
if (screen == 8 && doonce == 0) {
lcd.clear();
if (changestate == 0) {
lcd.print("Start?");
doonce = 1;
}
else {
lcd.print("Wait!");
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 1 ON");
digitalWrite(in1, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
if (Vodka==1)
lcd.clear();
lcd.print(pump1ml);
lcd.print("ml");
delay((pump1ml/11)*1000);
digitalWrite(in1, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 2 ON");
digitalWrite(in2, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Vodka = 0;
} {
if (Jager==1)
lcd.clear();
lcd.print(pump2ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in2, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 3 ON");
digitalWrite(in3, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Jager = 0;
} {
if (Vorosbor==1)
lcd.clear();
lcd.print(pump3ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in3, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 4 ON");
digitalWrite(in4, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Vorosbor = 0;
} {
if (Rosebor==1)
lcd.clear();
lcd.print(pump4ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in4, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 5 ON");
digitalWrite(in5, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Rosebor = 0;
} {
if (Narancs==1)
lcd.clear();
lcd.print(pump5ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in5, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 6 ON");
digitalWrite(in6, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Narancs = 0;
} {
if (Cola==1)
lcd.clear();
lcd.print(pump6ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in6, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 7 ON");
digitalWrite(in7, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Cola = 0;
} {
if (Bodza==1)
lcd.clear();
lcd.print(pump7ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in7, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 8 ON");
digitalWrite(in8, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Bodza = 0;
} {
if (Whisky)
lcd.clear();
lcd.print(pump8ml);
lcd.print("ml");
delay((pump3ml/12)*1000);
digitalWrite(in8, HIGH);
digitalWrite(in9, LOW);
delay(2000);
changestate = 0;
}
Whisky = 0;
} {
}
}
}
A hozzászólás módosítva: Aug 22, 2020
Szaisztok!
Segítségeteket kérem. Stringből a karakterek ASCII kódjára lenne szükségem.
String c_str;
.
.
// c_str='a'
c_str= InputNString.substring(i-1,i);
Kar= InputNString.substring(i-1,i);
Serial.print(stringVariable);
Serial.print(" c_str=");
Serial.print(c_str); // ha 'a' kiírja a 97-et
Serial.print( " ");
Serial.print(" Kar=");
Serial.print(Kar); // ha 'a' kiírja a 97-et, itt is
Serial.print( " ");
Serial.print((int) 'a');
// Serial.println((int) c_str);
Serial.println((int) Kar);
Az utolsó két sor bármelyikénél ezz a hibát írja: ( ha kiveszem a //-t)
" invalid cast from type 'String' to type 'int' " A hozzászólás módosítva: Aug 22, 2020
Odáig jutottam, hogy az M365.ino file-t bemásoltam az IDE-be,de már fordításkor az alábbi hibaüzenetet írja:
Arduino: 1.6.6 (Windows 7), Board: "Arduino Nano, ATmega328"
C:\Users\TARJNY~1\AppData\Local\Temp\arduino_9791abe49949cd732b89ce6cae2c3743\sketch_aug22a.ino:1:21: fatal error: defines.h: No such file or directory
#include "defines.h"
^
compilation terminated.
exit status 1
Hiba a fordítás során.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Valaki segítsen legyen kedves!
Köszi.
Persze, mert ott igazából nem karakterről van szó, amit könnyen tudsz int-re konvertálni, hanem String objektumról. A toCharArray() fv. használatát javaslom, vagy valami hasonlót.
Eleve rossz, magát az .ino file-t másold oda és nyisd meg, ne random új projekteket. És ne csak az ino file-t, hanem minden dolgot, ami ott van vele, gondolom a defines.h is ott van valahol. Illetve a megfelelő lib-eket is fel kell tenni, az is lehet még hiba, de itt nem hiszem, h erről lenne szó.
Mert szerintem nem jó az if-ed!!!
if (Vodka==1) Hol a { karakter?
lcd.clear();
lcd.print(pump1ml);
lcd.print("ml");
delay((pump1ml/11)*1000);
digitalWrite(in1, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 2 ON");
digitalWrite(in2, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Vodka = 0;
} {
Itt nyílik egy új, de nem jó szerintem
Így értelmezd
if (Vodka==1)
{
lcd.clear();
lcd.print(pump1ml);
lcd.print("ml");
delay((pump1ml/11)*1000);
digitalWrite(in1, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 2 ON");
digitalWrite(in2, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000)
{
}
Vodka = 0;
}
If (valami==0)
{
Az itteni kódok lefutnak, ha a valami nulla
}
Ezután már minden kód lefut az if nélkül is A hozzászólás módosítva: Aug 22, 2020
Igy próbáltam:
Kar.toCharArray(d,sizeof(d));
Serial.print(" d=");
Serial.print(d);
Igy továbbra is csak a betű jelenik meg, és nem az ASCII kódja.
Ne várd, hogy az ASCII kódja jelenjen meg, ha egy char változót (vagy tömböt) írsz ki.
Jelenleg nincs nálam semmilyen lap, de ez fordulni látszik
String InputNString = "alma";
char ch[2];
InputNString.substring(2,2).toCharArray(ch,1);
Serial.print((uint8_t)ch[0]);
char karakter= 'a';
int szam = (int) karakter;
Serial.println(szam);
Erre is csak egy nullát '0' kapok.
Köszi a segítséget, de ha így nem megy próbálkozok más megközelítéssel.
Továbbra sem működik. Valószínű, hogy egy hosszabb stringből próbálok egy karaktert kiemelni, de az nem "char' tipusu. Lehet, hogy ezt kellene bűvölnöm?
Akkor ha jól értem nem kell minden egyes italhoz if-et írni elég csak az elején?
Szerintem mindegyikhez. Csak akkor adja az italt, ha kérik, és ekkor a reléket sem bántja, ha nem.
Elvileg. Sokat nem néztem a kódod, neked kell tudnod hogy van pontosan felépítve. De szerintem kell mindegyikhez.
Próbáltam ahogy írtad,de ugyan azt csinálja. Csak az elsőt kapcsolja ki.
else {
lcd.print("Wait!");
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 1 ON");
digitalWrite(in1, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
if (Vodka==1)
{
lcd.clear();
lcd.print(pump1ml);
lcd.print("ml");
delay((pump1ml/11)*1000);
digitalWrite(in1, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 2 ON");
digitalWrite(in2, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Vodka = 0;
}
if (Jager==1)
{
lcd.clear();
lcd.print(pump2ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in2, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 3 ON");
digitalWrite(in3, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Jager = 0;
}
if (Vorosbor==1)
{
lcd.clear();
lcd.print(pump3ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in3, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 4 ON");
digitalWrite(in4, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Vorosbor = 0;
}
if (Rosebor==1)
{
lcd.clear();
lcd.print(pump4ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in4, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 5 ON");
digitalWrite(in5, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Rosebor = 0;
}
if (Narancs==1)
{
lcd.clear();
lcd.print(pump5ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in5, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 6 ON");
digitalWrite(in6, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Narancs = 0;
}
if (Cola==1)
{
lcd.clear();
lcd.print(pump6ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in6, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 7 ON");
digitalWrite(in7, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Cola = 0;
}
if (Bodza==1)
{
lcd.clear();
lcd.print(pump7ml);
lcd.print("ml");
delay((pump2ml/12)*1000);
digitalWrite(in7, HIGH);
digitalWrite(in9, LOW);
delay(2000);
weight = scale.read();
delay(100);
lcd.clear();
lcd.print("Pump 8 ON");
digitalWrite(in8, LOW);
digitalWrite(in9, HIGH);
while (scale.read() - weight < 3000) {
}
Bodza = 0;
}
if (Whisky)
{
lcd.clear();
lcd.print(pump8ml);
lcd.print("ml");
delay((pump3ml/12)*1000);
digitalWrite(in8, HIGH);
digitalWrite(in9, LOW);
delay(2000);
changestate = 0;
}
Whisky = 0;
}
}
}
}
Csinalhatnal 1 fuggvenyt amit 1szer kell megirni "jol". A feltetel vizsgalat utan megkapna melyik parameterre valtozzon
Ezek azok a portok lennenek , amik szelepeket billentik es a kiirando szoveges uzenetek ... stb.
A sok if helyett switch/ case nem lenne jobb ?
switch/case leirasa
|
|