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)
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ásSzerző: 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);
  }
}

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10032
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

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

HozzászólásSzerző: 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

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

HozzászólásSzerző: Balu98 » 2013. december 28. szombat, 20:55

binaryként hogyan?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10032
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

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

HozzászólásSzerző: 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

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

HozzászólásSzerző: Balu98 » 2013. december 28. szombat, 21:29

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
Tartózkodási hely: Tápiószőlős

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

HozzászólásSzerző: 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

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

HozzászólásSzerző: 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
Ú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ásSzerző: 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

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

HozzászólásSzerző: 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

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

HozzászólásSzerző: 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!


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég