7章:Arduino(アルドゥイーノ)演習(Communication-01編)

    作成2015.08.19

  1. Arduino(アルドゥイーノ)演習参照アドレス
     Arduino(アルドゥイーノ)演習は下記のアドレスを参照します。
    https://www.arduino.cc/en/Tutorial/HomePage


  2. Communication/Read ASCII Stringの回路図
     Communication/Read ASCII Stringの回路図を以下に示します。





  3. Communication/Read ASCII Stringのスケッチ
    (1)メニューの「ファイル」_「スケッチの例」_「Communication」_「Read ASCII String」 で以下のスケッチが設定されます。
    /*
      Reading a serial ASCII-encoded string.
     This sketch demonstrates the Serial parseInt() function.
     It looks for an ASCII string of comma-separated values.
     It parses them into ints, and uses those to fade an RGB LED.
    
     Circuit: Common-anode RGB LED wired like so:
     * Red cathode: digital pin 3
     * Green cathode: digital pin 5
     * blue cathode: digital pin 6
     * anode: +5V
     created 13 Apr 2012
     by Tom Igoe
     This example code is in the public domain.
     */
    // pins for the LEDs:
    const int redPin = 3;
    const int greenPin = 5;
    const int bluePin = 6;
    
    void setup() {
      // initialize serial:
      Serial.begin(9600);
      // make the pins outputs:
      pinMode(redPin, OUTPUT);
      pinMode(greenPin, OUTPUT);
      pinMode(bluePin, OUTPUT);
    
    }
    
    void loop() {
      // if there's any serial available, read it:
      while (Serial.available() > 0) {
    
        // look for the next valid integer in the incoming serial stream:
        int red = Serial.parseInt();
        // do it again:
        int green = Serial.parseInt();
        // do it again:
        int blue = Serial.parseInt();
    
        // look for the newline. That's the end of your
        // sentence:
        if (Serial.read() == '\n') {
          // constrain the values to 0 - 255 and invert
          // if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
          red = 255 - constrain(red, 0, 255);
          green = 255 - constrain(green, 0, 255);
          blue = 255 - constrain(blue, 0, 255);
    
          // fade the red, green, and blue legs of the LED:
          analogWrite(redPin, red);
          analogWrite(greenPin, green);
          analogWrite(bluePin, blue);
    
          // print the three numbers in one string as hexadecimal:
          Serial.print(red, HEX);
          Serial.print(green, HEX);
          Serial.println(blue, HEX);
        }
      }
    }
    


  4. Communication/Read ASCII Stringの実行
    (1)メニューの「スケッチ」_「マイコンボードに書き込む」で書込みされ、実行されます。
    (2)メニューの「ツール」_「シリアルモニタ」を選択するとシリアルモニタが表示されます。
    (3)シリアルモニタにLFのみを設定します。
    (4)シリアルモニタの送信テキストボックスに「50,100,200」を設定します。



    (5)送信ボタンを押します。
    (6)「CD9B37」を受信します。
    (7)3ピンが4V、5ピンが3.02V、6ピンが1.09Vに設定され、LEDが設定電圧差で点灯します。

    **注(1)送信データは0〜255,0〜255,0〜255\nの条件を満たす必要があります。これ以外のデータフォーマットには対応していないようです。


  5. Communication/ASCII tableの回路図
     パソコンとのUSB接続のみとなります。


  6. Communication/ASCII tableのスケッチ
    (1)メニューの「ファイル」_「スケッチの例」_「Communication」_「ASCII table」でスケッチが設定されます。
    /*
      ASCII table
     Prints out byte values in all possible formats:
     * as raw binary values
     * as ASCII-encoded decimal, hex, octal, and binary values
     For more on ASCII, see http://www.asciitable.com and http://en.wikipedia.org/wiki/ASCII
     The circuit:  No external hardware needed.
     created 2006
     by Nicholas Zambetti
     modified 9 Apr 2012
     by Tom Igoe
     This example code is in the public domain.
     
     */
    void setup() {
      //Initialize serial and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }
    
      // prints title with ending line break
      Serial.println("ASCII Table ~ Character Map");
    }
    
    // first visible ASCIIcharacter '!' is number 33:
    int thisByte = 33;
    // you can also write ASCII characters in single quotes.
    // for example. '!' is the same as 33, so you could also use this:
    //int thisByte = '!';
    
    void loop() {
      // prints value unaltered, i.e. the raw binary version of the
      // byte. The serial monitor interprets all bytes as
      // ASCII, so 33, the first number,  will show up as '!'
      Serial.write(thisByte);
    
      Serial.print(", dec: ");
      // prints value as string as an ASCII-encoded decimal (base 10).
      // Decimal is the  default format for Serial.print() and Serial.println(),
      // so no modifier is needed:
      Serial.print(thisByte);
      // But you can declare the modifier for decimal if you want to.
      //this also works if you uncomment it:
      // Serial.print(thisByte, DEC);
    
      Serial.print(", hex: ");
      // prints value as string in hexadecimal (base 16):
      Serial.print(thisByte, HEX);
    
      Serial.print(", oct: ");
      // prints value as string in octal (base 8);
      Serial.print(thisByte, OCT);
    
      Serial.print(", bin: ");
      // prints value as string in binary (base 2)
      // also prints ending line break:
      Serial.println(thisByte, BIN);
    
      // if printed last visible character '~' or 126, stop:
      if (thisByte == 126) {    // you could also use if (thisByte == '~') {
        // This loop loops forever and does nothing
        while (true) {
          continue;
        }
      }
      // go on to the next character
      thisByte++;
    }
    


  7. Communication/ASCII tableの実行
    (1)メニューの「スケッチ」_「マイコンボードに書き込む」で書込みされ、実行されます。
    (2)メニューの「ツール」_「シリアルモニタ」を選択するとシリアルモニタが表示されます。
    (3)シリアルモニタに以下の受信データが表示されます。
    ASCII Table ~ Character Map
    !, dec: 33, hex: 21, oct: 41, bin: 100001
    ", dec: 34, hex: 22, oct: 42, bin: 100010
    #, dec: 35, hex: 23, oct: 43, bin: 100011
    $, dec: 36, hex: 24, oct: 44, bin: 100100
    %, dec: 37, hex: 25, oct: 45, bin: 100101
    &, dec: 38, hex: 26, oct: 46, bin: 100110
    ', dec: 39, hex: 27, oct: 47, bin: 100111
    (, dec: 40, hex: 28, oct: 50, bin: 101000
    ), dec: 41, hex: 29, oct: 51, bin: 101001
    *, dec: 42, hex: 2A, oct: 52, bin: 101010
    +, dec: 43, hex: 2B, oct: 53, bin: 101011
    ,, dec: 44, hex: 2C, oct: 54, bin: 101100
    -, dec: 45, hex: 2D, oct: 55, bin: 101101
    ., dec: 46, hex: 2E, oct: 56, bin: 101110
    /, dec: 47, hex: 2F, oct: 57, bin: 101111
    0, dec: 48, hex: 30, oct: 60, bin: 110000
    1, dec: 49, hex: 31, oct: 61, bin: 110001
    2, dec: 50, hex: 32, oct: 62, bin: 110010
    3, dec: 51, hex: 33, oct: 63, bin: 110011
    4, dec: 52, hex: 34, oct: 64, bin: 110100
    5, dec: 53, hex: 35, oct: 65, bin: 110101
    6, dec: 54, hex: 36, oct: 66, bin: 110110
    7, dec: 55, hex: 37, oct: 67, bin: 110111
    8, dec: 56, hex: 38, oct: 70, bin: 111000
    9, dec: 57, hex: 39, oct: 71, bin: 111001
    :, dec: 58, hex: 3A, oct: 72, bin: 111010
    ;, dec: 59, hex: 3B, oct: 73, bin: 111011
    <, dec: 60, hex: 3C, oct: 74, bin: 111100
    =, dec: 61, hex: 3D, oct: 75, bin: 111101
    >, dec: 62, hex: 3E, oct: 76, bin: 111110
    ?, dec: 63, hex: 3F, oct: 77, bin: 111111
    @, dec: 64, hex: 40, oct: 100, bin: 1000000
    A, dec: 65, hex: 41, oct: 101, bin: 1000001
    B, dec: 66, hex: 42, oct: 102, bin: 1000010
    C, dec: 67, hex: 43, oct: 103, bin: 1000011
    D, dec: 68, hex: 44, oct: 104, bin: 1000100
    E, dec: 69, hex: 45, oct: 105, bin: 1000101
    F, dec: 70, hex: 46, oct: 106, bin: 1000110
    G, dec: 71, hex: 47, oct: 107, bin: 1000111
    H, dec: 72, hex: 48, oct: 110, bin: 1001000
    I, dec: 73, hex: 49, oct: 111, bin: 1001001
    J, dec: 74, hex: 4A, oct: 112, bin: 1001010
    K, dec: 75, hex: 4B, oct: 113, bin: 1001011
    L, dec: 76, hex: 4C, oct: 114, bin: 1001100
    M, dec: 77, hex: 4D, oct: 115, bin: 1001101
    N, dec: 78, hex: 4E, oct: 116, bin: 1001110
    O, dec: 79, hex: 4F, oct: 117, bin: 1001111
    P, dec: 80, hex: 50, oct: 120, bin: 1010000
    Q, dec: 81, hex: 51, oct: 121, bin: 1010001
    R, dec: 82, hex: 52, oct: 122, bin: 1010010
    S, dec: 83, hex: 53, oct: 123, bin: 1010011
    T, dec: 84, hex: 54, oct: 124, bin: 1010100
    U, dec: 85, hex: 55, oct: 125, bin: 1010101
    V, dec: 86, hex: 56, oct: 126, bin: 1010110
    W, dec: 87, hex: 57, oct: 127, bin: 1010111
    X, dec: 88, hex: 58, oct: 130, bin: 1011000
    Y, dec: 89, hex: 59, oct: 131, bin: 1011001
    Z, dec: 90, hex: 5A, oct: 132, bin: 1011010
    [, dec: 91, hex: 5B, oct: 133, bin: 1011011
    \, dec: 92, hex: 5C, oct: 134, bin: 1011100
    ], dec: 93, hex: 5D, oct: 135, bin: 1011101
    ^, dec: 94, hex: 5E, oct: 136, bin: 1011110
    _, dec: 95, hex: 5F, oct: 137, bin: 1011111
    `, dec: 96, hex: 60, oct: 140, bin: 1100000
    a, dec: 97, hex: 61, oct: 141, bin: 1100001
    b, dec: 98, hex: 62, oct: 142, bin: 1100010
    c, dec: 99, hex: 63, oct: 143, bin: 1100011
    d, dec: 100, hex: 64, oct: 144, bin: 1100100
    e, dec: 101, hex: 65, oct: 145, bin: 1100101
    f, dec: 102, hex: 66, oct: 146, bin: 1100110
    g, dec: 103, hex: 67, oct: 147, bin: 1100111
    h, dec: 104, hex: 68, oct: 150, bin: 1101000
    i, dec: 105, hex: 69, oct: 151, bin: 1101001
    j, dec: 106, hex: 6A, oct: 152, bin: 1101010
    k, dec: 107, hex: 6B, oct: 153, bin: 1101011
    l, dec: 108, hex: 6C, oct: 154, bin: 1101100
    m, dec: 109, hex: 6D, oct: 155, bin: 1101101
    n, dec: 110, hex: 6E, oct: 156, bin: 1101110
    o, dec: 111, hex: 6F, oct: 157, bin: 1101111
    p, dec: 112, hex: 70, oct: 160, bin: 1110000
    q, dec: 113, hex: 71, oct: 161, bin: 1110001
    r, dec: 114, hex: 72, oct: 162, bin: 1110010
    s, dec: 115, hex: 73, oct: 163, bin: 1110011
    t, dec: 116, hex: 74, oct: 164, bin: 1110100
    u, dec: 117, hex: 75, oct: 165, bin: 1110101
    v, dec: 118, hex: 76, oct: 166, bin: 1110110
    w, dec: 119, hex: 77, oct: 167, bin: 1110111
    x, dec: 120, hex: 78, oct: 170, bin: 1111000
    y, dec: 121, hex: 79, oct: 171, bin: 1111001
    z, dec: 122, hex: 7A, oct: 172, bin: 1111010
    {, dec: 123, hex: 7B, oct: 173, bin: 1111011
    |, dec: 124, hex: 7C, oct: 174, bin: 1111100
    }, dec: 125, hex: 7D, oct: 175, bin: 1111101
    ~, dec: 126, hex: 7E, oct: 176, bin: 1111110
    


  8. Arduino(アルドゥイーノ)演習(Communication-01編)まとめ
    (1)Communication/Read ASCII Stringでは、Serial.available()関数、Serial.parseInt()関数、Serial.read() 関数、constrain(red, 0, 255)関数等の使用方法が理解できます。
    (2)Communication/ASCII tableでは、Serial.print(thisByte)、Serial.print(", dec: ")、Serial.print(thisByte)、Serial.print(", hex: ")、Serial.print(thisByte, HEX)、 Serial.print(", oct: ")、Serial.print(thisByte, OCT)、Serial.print(", bin: ")、Serial.println(thisByte, BIN)の差が良く理解できます。

    **注(1)Communication/Read ASCII Stringの送信データは0〜255,0〜255,0〜255\nの条件を満たす必要があります。これ以外のデータフォーマットには対応していないようです。(0〜255,0〜255,0〜255\r\nはだめでした。)




8章:Arduino(アルドゥイーノ)演習(Communication/Dimmer編)に行く。

トップページに戻る。