Soros monitoron 9-től nagyobb szám bevitele

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Balu98
DrótVégénSzéndarab
Hozzászólások: 17
Csatlakozott: 2013. december 26. csütörtök, 0:44

Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Balu98 »

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);
  }
}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Robert »

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

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Balu98 »

binaryként hogyan?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Robert »

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

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Balu98 »

Visual Basic-kel szeretném vezérelni de nem jön össze.
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: GPeti »

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

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Balu98 »

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
Újonc
Hozzászólások: 4
Csatlakozott: 2013. szeptember 3. kedd, 10:46

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: icserny »

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

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Balu98 »

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

Re: Soros monitoron 9-től nagyobb szám bevitele

Hozzászólás Szerző: Bazs87 »

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!
Válasz küldése