Parancsbeli segítség
- oliver2461
- DrótVégénSzéndarab
- Hozzászólások: 27
- Csatlakozott: 2015. december 27. vasárnap, 7:11
Parancsbeli segítség
Üdv! A kérdésem a következő : Létezik e valamilyen megoldás arra hogy egy parancsból több kimenetet kapcsoljak ?
Köszi!
Köszi!
- oliver2461
- DrótVégénSzéndarab
- Hozzászólások: 27
- Csatlakozott: 2015. december 27. vasárnap, 7:11
Re: Parancsbeli segítség
Írtam egy egyszerű de hosszó programot sok szenvedéssel és véletlenűl ki hagytam egy fontos dolgot . méghozzá hogy ne csak a D13as láb legyen magas hanem a D2 es is . Egy rövid részlet a kódból:
**És ez csökken egészen 0 ig
Szóval elég hosszú volt megírni és remélem nem kell átírnom az egészet.
Egyébként Arduino nano panelen és a legfrissebb arduino IDE -vel készült.
Kód: Egész kijelölése
digitalWrite(LED1, HIGH);
delay(Q); // ahol Q = 10000
digitalWrite(LED1, LOW);
delay(Q);
digitalWrite(LED1, HIGH);
delay(W); //ahol W = 9990 **
digitalWrite(LED1, LOW);
delay(W);
Szóval elég hosszú volt megírni és remélem nem kell átírnom az egészet.
Egyébként Arduino nano panelen és a legfrissebb arduino IDE -vel készült.
Re: Parancsbeli segítség
szia!
először is: a Robert féle 60+15 napos tanfolyam megvolt?
ha nem, sürgősen iratkozz fel rá!
a válasz szövegszerkesztői/editori ismereteket követel: keresés és csere
ajánlom figyelmedbe a notepad++ programot!
megkeresed a ledkigyújtó parancsot, és lecseréled két ledkigyújtó parancsra
és ugyanezt teszed a ledkioltó paranccsal
DE!
nem sormintát kell gyártani, hanem egészséges lustaságodat követve elgondolkozni, hogyan lehet ezt egyszerűbben megítni?
azt te is érzed, hogy az általad megvalósított megoldás nem tökéletes.
macerás beírni, macerás módosítani.
a kulcsszó a ciklus!
és ennyi
nincs sorminta, nincs módosítási mizéria
először is: a Robert féle 60+15 napos tanfolyam megvolt?
ha nem, sürgősen iratkozz fel rá!
a válasz szövegszerkesztői/editori ismereteket követel: keresés és csere
ajánlom figyelmedbe a notepad++ programot!
megkeresed a ledkigyújtó parancsot, és lecseréled két ledkigyújtó parancsra
és ugyanezt teszed a ledkioltó paranccsal
DE!
nem sormintát kell gyártani, hanem egészséges lustaságodat követve elgondolkozni, hogyan lehet ezt egyszerűbben megítni?
azt te is érzed, hogy az általad megvalósított megoldás nem tökéletes.
macerás beírni, macerás módosítani.
a kulcsszó a ciklus!
Kód: Egész kijelölése
beállítod w értékét 10000re
ciklus kezdete, míg w>0
ledet kigyújt
csinálsz bármimást
vársz w-ig
ledet leolt
csinálsz bármimást
vársz w-ig
w-t csökkented 10-el
ciklus vége
nincs sorminta, nincs módosítási mizéria
- oliver2461
- DrótVégénSzéndarab
- Hozzászólások: 27
- Csatlakozott: 2015. december 27. vasárnap, 7:11
Re: Parancsbeli segítség
Sikerült valamit össze hoznom...
Ez így jó is lenne de nem fut folyamatosan hanem csak egyszer és vége.
Ezt hogy tudnám kiküszöbőlni?
Mert nem igazán értem mostmár végképp hogy miért és csak sejtéseim vannak.
Egyébként a 60 napos tanfolyamra feliratkoztam. A 20. Leckénél tartok .
Kód: Egész kijelölése
int delayTime = 10000;
void setup() {
}
void loop() {
if (delayTime != 0){
digitalWrite(13, HIGH);
delay(20);
digitalWrite( 13, LOW);
delay(delayTime);
delayTime = delayTime - 10;
}
}
Ezt hogy tudnám kiküszöbőlni?
Mert nem igazán értem mostmár végképp hogy miért és csak sejtéseim vannak.
Egyébként a 60 napos tanfolyamra feliratkoztam. A 20. Leckénél tartok .
- oliver2461
- DrótVégénSzéndarab
- Hozzászólások: 27
- Csatlakozott: 2015. december 27. vasárnap, 7:11
Re: Parancsbeli segítség
Az előző hibás szóval itt van helyesen ::
Kód: Egész kijelölése
int delayTime = 10000;
void setup() {
pinMode(13, OUTPUT);
pinMode(2, OUTPUT);
}
void loop() {
if (delayTime != 0){
digitalWrite(13, HIGH);
digitalWrite(2, HIGH);
delay(20);
digitalWrite( 13, LOW);
digitalwrite (2, LOW);
delay(delayTime);
delayTime = delayTime - 10;
}
}
Re: Parancsbeli segítség
szerintem nem fut le egyszer sem
az ide kisbetű-nagybetű érzékeny.
de
logikai bukfenc is van a programodban:
nem mondod meg, hogy mit csináljon a program, ha elérte a nullát?
kell az if másik ága, az else ág.
ott mondod meg, mi legyen, ha nulla lett?
(pl visszaállítani a kezdeti értékre)
másik kérdés:
az eredeti megoldásodban a változó értékéig ég a led.
a mostaniban fixen 20ms-ra van belőve
így akartad?
tanács: az induló értéket vedd le kisebbre a tesztelé idejére
pl 1000ról indulva gyorsabban elér 0-ig
(c)
Kód: Egész kijelölése
digitalwrite (2, LOW);
de
logikai bukfenc is van a programodban:
nem mondod meg, hogy mit csináljon a program, ha elérte a nullát?
kell az if másik ága, az else ág.
ott mondod meg, mi legyen, ha nulla lett?
(pl visszaállítani a kezdeti értékre)
másik kérdés:
az eredeti megoldásodban a változó értékéig ég a led.
a mostaniban fixen 20ms-ra van belőve
így akartad?
tanács: az induló értéket vedd le kisebbre a tesztelé idejére
pl 1000ról indulva gyorsabban elér 0-ig
(c)
- oliver2461
- DrótVégénSzéndarab
- Hozzászólások: 27
- Csatlakozott: 2015. december 27. vasárnap, 7:11
Re: Parancsbeli segítség
Ja bocsi a hibaért csak tabrol irok és másoltam. Menet közben jött hogy így normálisabb. Igen én 500 ról szoktam probálgatni.
-
- Újonc
- Hozzászólások: 1
- Csatlakozott: 2015. december 25. péntek, 8:30
Re: Parancsbeli segítség
Próbáld meg ezt a kódot. A D2 pint nem írtam be, mert csak simán az UNO-n próbáltam, röptében....
Kód: Egész kijelölése
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
for (int i=1000; i>0;) // menjen 1000-től 0-ig
{
digitalWrite(13, HIGH);
delay(20);
digitalWrite(13, LOW);
delay(i);
i-=10; // a következő delay(i) legyen 10-el kisebb
}
}
CCS
Re: Parancsbeli segítség
Sziasztok!
Adott egy feszültség mérő progi arduinora.
Hogy tudom megoldani programon belül, hogy ha egy mért érték bizonyos szint alatt van akkor x kimeneten a led villogjon, ha felette akkor világítson, de ne álljon ott meg a program?
erre a kódrészletre gondoltam:
if (( ( _ABVAR_7_S1VCC ) <= ( 4.5 ) ))
{
tone(2, 1);
}
else
{
__ardublockDigitalWrite(2, HIGH);
}
if (( ( _ABVAR_9_S2VCC ) <= ( 4.5 ) ))
{
tone(3, 1);
A teljes kód:
void __ardublockDigitalWrite(int pinNumber, boolean status)
{
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, status);
}
int _ABVAR_1_BATT = 0 ;
int __ardublockAnalogRead(int pinNumber)
{
pinMode(pinNumber, INPUT);
return analogRead(pinNumber);
}
double _ABVAR_2_VBATT = 0.0 ;
int _ABVAR_3_V1 = 0 ;
int _ABVAR_4_V1S = 0 ;
int _ABVAR_5_V2 = 0 ;
int _ABVAR_6_V2S = 0 ;
double _ABVAR_7_S1VCC = 0.0 ;
double _ABVAR_8_S1SEN = 0.0 ;
double _ABVAR_9_S2VCC = 0.0 ;
double _ABVAR_10_V2SEN = 0.0 ;
double _ABVAR_11_S2SEN = 0.0 ;
void setup()
{
Serial.begin(9600);
__ardublockDigitalWrite(2, LOW);
__ardublockDigitalWrite(3, LOW);
__ardublockDigitalWrite(4, LOW);
__ardublockDigitalWrite(5, LOW);
__ardublockDigitalWrite(12, LOW);
__ardublockDigitalWrite(13, HIGH);
_ABVAR_1_BATT = __ardublockAnalogRead(A4) ;
_ABVAR_2_VBATT = ( ( _ABVAR_1_BATT * 15.0 ) / 1024.0 ) ;
Serial.print("Test kit";
Serial.print(" ";
Serial.println();
if (( ( _ABVAR_2_VBATT ) <= ( 3.75 ) ))
{
Serial.print("BATT LOW!:";
Serial.print(" ";
Serial.print(_ABVAR_2_VBATT);
Serial.print(" ";
Serial.println();
}
else
{
__ardublockDigitalWrite(13, LOW);
__ardublockDigitalWrite(12, HIGH);
Serial.print("BATT:";
Serial.print(" ";
Serial.print(_ABVAR_2_VBATT);
Serial.print(" ";
Serial.println();
__ardublockDigitalWrite(13, HIGH);
__ardublockDigitalWrite(12, LOW);
}
}
void loop()
{
_ABVAR_3_V1 = __ardublockAnalogRead(A0) ;
_ABVAR_4_V1S = __ardublockAnalogRead(A1) ;
_ABVAR_5_V2 = __ardublockAnalogRead(A2) ;
_ABVAR_6_V2S = __ardublockAnalogRead(A3) ;
_ABVAR_7_S1VCC = ( ( _ABVAR_3_V1 * 15.0 ) / 1024.0 ) ;
_ABVAR_8_S1SEN = ( ( _ABVAR_4_V1S * 15.0 ) / 1024.0 ) ;
_ABVAR_9_S2VCC = ( ( _ABVAR_5_V2 * 15.0 ) / 1024.0 ) ;
_ABVAR_10_V2SEN = ( ( _ABVAR_6_V2S * 15.0 ) / 1024.0 ) ;
if (( ( _ABVAR_7_S1VCC ) <= ( 4.5 ) ))
{
tone(2, 1);
}
else
{
__ardublockDigitalWrite(2, HIGH);
}
if (( ( _ABVAR_9_S2VCC ) <= ( 4.5 ) ))
{
tone(3, 1);
}
else
{
__ardublockDigitalWrite(3, HIGH);
}
if (( ( _ABVAR_8_S1SEN ) >= ( 4.5 ) ))
{
__ardublockDigitalWrite(4, HIGH);
}
else
{
__ardublockDigitalWrite(4, LOW);
}
if (( ( _ABVAR_11_S2SEN ) >= ( 4.5 ) ))
{
__ardublockDigitalWrite(5, HIGH);
}
else
{
__ardublockDigitalWrite(5, LOW);
}
Serial.print("S1 V:";
Serial.print(" ";
Serial.print(_ABVAR_7_S1VCC);
Serial.print(" ";
Serial.print("S1S V:";
Serial.print(" ";
Serial.print(_ABVAR_8_S1SEN);
Serial.print(" ";
Serial.print("S2 V:";
Serial.print(" ";
Serial.print(_ABVAR_9_S2VCC);
Serial.print(" ";
Serial.print("S2S V:";
Serial.print(" ";
Serial.print(_ABVAR_10_V2SEN);
Serial.print(" ";
Serial.println();
}
Adott egy feszültség mérő progi arduinora.
Hogy tudom megoldani programon belül, hogy ha egy mért érték bizonyos szint alatt van akkor x kimeneten a led villogjon, ha felette akkor világítson, de ne álljon ott meg a program?
erre a kódrészletre gondoltam:
if (( ( _ABVAR_7_S1VCC ) <= ( 4.5 ) ))
{
tone(2, 1);
}
else
{
__ardublockDigitalWrite(2, HIGH);
}
if (( ( _ABVAR_9_S2VCC ) <= ( 4.5 ) ))
{
tone(3, 1);
A teljes kód:
void __ardublockDigitalWrite(int pinNumber, boolean status)
{
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, status);
}
int _ABVAR_1_BATT = 0 ;
int __ardublockAnalogRead(int pinNumber)
{
pinMode(pinNumber, INPUT);
return analogRead(pinNumber);
}
double _ABVAR_2_VBATT = 0.0 ;
int _ABVAR_3_V1 = 0 ;
int _ABVAR_4_V1S = 0 ;
int _ABVAR_5_V2 = 0 ;
int _ABVAR_6_V2S = 0 ;
double _ABVAR_7_S1VCC = 0.0 ;
double _ABVAR_8_S1SEN = 0.0 ;
double _ABVAR_9_S2VCC = 0.0 ;
double _ABVAR_10_V2SEN = 0.0 ;
double _ABVAR_11_S2SEN = 0.0 ;
void setup()
{
Serial.begin(9600);
__ardublockDigitalWrite(2, LOW);
__ardublockDigitalWrite(3, LOW);
__ardublockDigitalWrite(4, LOW);
__ardublockDigitalWrite(5, LOW);
__ardublockDigitalWrite(12, LOW);
__ardublockDigitalWrite(13, HIGH);
_ABVAR_1_BATT = __ardublockAnalogRead(A4) ;
_ABVAR_2_VBATT = ( ( _ABVAR_1_BATT * 15.0 ) / 1024.0 ) ;
Serial.print("Test kit";
Serial.print(" ";
Serial.println();
if (( ( _ABVAR_2_VBATT ) <= ( 3.75 ) ))
{
Serial.print("BATT LOW!:";
Serial.print(" ";
Serial.print(_ABVAR_2_VBATT);
Serial.print(" ";
Serial.println();
}
else
{
__ardublockDigitalWrite(13, LOW);
__ardublockDigitalWrite(12, HIGH);
Serial.print("BATT:";
Serial.print(" ";
Serial.print(_ABVAR_2_VBATT);
Serial.print(" ";
Serial.println();
__ardublockDigitalWrite(13, HIGH);
__ardublockDigitalWrite(12, LOW);
}
}
void loop()
{
_ABVAR_3_V1 = __ardublockAnalogRead(A0) ;
_ABVAR_4_V1S = __ardublockAnalogRead(A1) ;
_ABVAR_5_V2 = __ardublockAnalogRead(A2) ;
_ABVAR_6_V2S = __ardublockAnalogRead(A3) ;
_ABVAR_7_S1VCC = ( ( _ABVAR_3_V1 * 15.0 ) / 1024.0 ) ;
_ABVAR_8_S1SEN = ( ( _ABVAR_4_V1S * 15.0 ) / 1024.0 ) ;
_ABVAR_9_S2VCC = ( ( _ABVAR_5_V2 * 15.0 ) / 1024.0 ) ;
_ABVAR_10_V2SEN = ( ( _ABVAR_6_V2S * 15.0 ) / 1024.0 ) ;
if (( ( _ABVAR_7_S1VCC ) <= ( 4.5 ) ))
{
tone(2, 1);
}
else
{
__ardublockDigitalWrite(2, HIGH);
}
if (( ( _ABVAR_9_S2VCC ) <= ( 4.5 ) ))
{
tone(3, 1);
}
else
{
__ardublockDigitalWrite(3, HIGH);
}
if (( ( _ABVAR_8_S1SEN ) >= ( 4.5 ) ))
{
__ardublockDigitalWrite(4, HIGH);
}
else
{
__ardublockDigitalWrite(4, LOW);
}
if (( ( _ABVAR_11_S2SEN ) >= ( 4.5 ) ))
{
__ardublockDigitalWrite(5, HIGH);
}
else
{
__ardublockDigitalWrite(5, LOW);
}
Serial.print("S1 V:";
Serial.print(" ";
Serial.print(_ABVAR_7_S1VCC);
Serial.print(" ";
Serial.print("S1S V:";
Serial.print(" ";
Serial.print(_ABVAR_8_S1SEN);
Serial.print(" ";
Serial.print("S2 V:";
Serial.print(" ";
Serial.print(_ABVAR_9_S2VCC);
Serial.print(" ";
Serial.print("S2S V:";
Serial.print(" ";
Serial.print(_ABVAR_10_V2SEN);
Serial.print(" ";
Serial.println();
}