Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Balu98
DrótVégénSzéndarab
Hozzászólások: 17 Csatlakozott: 2013. december 26. csütörtök, 0:44
Hozzászólás
Szerző: Balu98 » 2013. december 28. szombat, 19:51
Led fényerő vezérlőt akarok csinálni csak 9-nél nagyobb számot nem tudok elküldeni. Ugye nekem 0-tól 255-ig kellenének. Van erre valami megoldás?
Eddig a kód:
Kód: Egész kijelölése
const int ledPin = 9;
void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
byte brightness;
if (Serial.available()) {
brightness = Serial.read()-'0';
analogWrite(ledPin, brightness);
Serial.println(brightness);
}
}
Robert
Elektronbűvölő
Hozzászólások: 10213 Csatlakozott: 2005. december 9. péntek, 7:00
Hozzászólás
Szerző: Robert » 2013. december 28. szombat, 20:39
Karakterenként küldés helyett küldd binary-ként.
Vagy ha karakterenként, akkor utána string -> számérték átalakítás (val (?)).
Balu98
DrótVégénSzéndarab
Hozzászólások: 17 Csatlakozott: 2013. december 26. csütörtök, 0:44
Hozzászólás
Szerző: Balu98 » 2013. december 28. szombat, 20:55
binaryként hogyan?
Robert
Elektronbűvölő
Hozzászólások: 10213 Csatlakozott: 2005. december 9. péntek, 7:00
Hozzászólás
Szerző: Robert » 2013. december 28. szombat, 21:02
A _küldő_ oldalon legyen bináris érték.
pl. serial.read()-32
Ekkor: space=32 -> 0
A = 55 -> 55-32
s.i.t...
Balu98
DrótVégénSzéndarab
Hozzászólások: 17 Csatlakozott: 2013. december 26. csütörtök, 0:44
Hozzászólás
Szerző: Balu98 » 2013. december 28. szombat, 21:29
Visual Basic-kel szeretném vezérelni de nem jön össze.
GPeti
Bitmanipulátor
Hozzászólások: 131 Csatlakozott: 2011. március 3. csütörtök, 7:00
Hozzászólás
Szerző: GPeti » 2013. december 28. szombat, 22:45
Visual Basic nem egyszerű bináris értéket kiadni de tömbben lehet:
Dim BOX As New IO.Ports.SerialPort
Dim data(18) As Byte
Data(0) = 254 'FE
BOX.Write(Data, 0, 1)
Balu98
DrótVégénSzéndarab
Hozzászólások: 17 Csatlakozott: 2013. december 26. csütörtök, 0:44
Hozzászólás
Szerző: Balu98 » 2013. december 29. vasárnap, 0:31
Sikerült megoldani a problémát. ASCII számokat használ és sikerült Visual Basic-ben ASCII-be konvertálni a számokat.
icserny
Újonc
Hozzászólások: 4 Csatlakozott: 2013. szeptember 3. kedd, 10:46
Hozzászólás
Szerző: icserny » 2014. január 2. csütörtök, 17:43
Balu98 írta: Led fényerő vezérlőt akarok csinálni csak 9-nél nagyobb számot nem tudok elküldeni. Ugye nekem 0-tól 255-ig kellenének. Van erre valami megoldás?
Van megoldás. Például így is lehet (Arduino 1.05 van nálam):
Kód: Egész kijelölése
const int ledPin = 9;
void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
byte brightness;
if (Serial.available()) {
brightness = Serial.parseInt()'; //<========
analogWrite(ledPin, brightness);
Serial.println(brightness);
}
}
Balu98
DrótVégénSzéndarab
Hozzászólások: 17 Csatlakozott: 2013. december 26. csütörtök, 0:44
Hozzászólás
Szerző: Balu98 » 2014. január 2. csütörtök, 20:52
Ez se rossz de én úgy oldottam meg hogy a számot átkonvertáltam ASCII-be és azt küldtem el a porton keresztül.
Bazs87
Biztosítékgyilkos
Hozzászólások: 62 Csatlakozott: 2014. július 20. vasárnap, 20:27
Hozzászólás
Szerző: Bazs87 » 2014. október 6. hétfő, 20:21
szia!
ha serial.read helyett hasznald ezt (icserny is ezt javasolta):
http://arduino.cc/en/Reference/ParseInt
gyönyörűen áthoz integert, épp ma volt nekem is ilyen bajom.
Ha szükségét érzed küldök mintakódot is.
Sok sikert!