GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
がじぇるね岡宮です。ルネサスナイト15用のスレッドです。
2019_1214_ワークショップ_rev1.pdf
今回の午前ワークショップでは、「GR-CITRUS、GR-SAKURA、GR-ROSE」を扱います。
これらのボードは「RXというCPUコア」を使っており、100MHz程度の周波数で動作します。
1.Lチカ
RXを使用したGRボードは、「USBを接続してリセットを押すとUSBメモリになります」。
GR-CITRUSの手順を図に示します。GR-SAKURAでもGR-ROSEでもリセットボタンの位置は異なりますが、手順は同じです。
USBメモリになることが確認できたら、IDE for GRでLEDを点滅するプログラムを書いてみます。
では、IDE for GRを起動して、メニュー「ツール」→「マイコンボード」からMYボードを選択してください。Arduino IDEと一緒ですよ。
では、以下のLEDを点滅するプログラムをコピーして貼り付けましょう。
#include <Arduino.h>#ifdef LED_BUILTINint led = LED_BUILTIN;#elseint led = PIN_LED0;#endifvoid setup() { pinMode(led, OUTPUT); }void loop() { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500);}
その後、IDEの書き込みボタンを押してください。
GRボードにプログラムが書き込まれて、LEDが点滅します。
「プログラムを書き込むときはGRボードのリセットボタンを押す」ことを忘れないでください。
2.クリスマス用のLチカ
皆さんには赤、緑、黄色のいずれかのLEDをお配りしています。これを、やさしく、いい感じに光らせて、クリスマスにふさわしい光を灯してみます。
以下のように、LEDを接続します。これはGR-CITRUSの例です。「たまたまGNDに近いポートがA3なので」このように接続しています。
「GR-SAKURAの場合はA0」、「GR-ROSEの場合はピン21」がいいですね。よく分からないときは、スタッフに声をかけてください。
では、次のプログラムを書き込んでください。1行目のLED_PINはLEDの接続先によって変えてください。
#define LED_PIN A3void setup() {}void loop() { for(int i = 1; i < 256; i++){ analogWrite(LED_PIN, i); delay(3); } for(int i = 1; i < 256; i++){ analogWrite(LED_PIN, 255-i); delay(3); }}
3. みんなでLチカ クリスマスバージョン
さて、ここまでは「普通のLED点滅」でした。
「One Teamになる」ときがきました。
イメージはこうです。
それぞれのつなぎ方は以下の通り、デイジーチェーンでつないでいきます。
以下のプログラムを書き込んでください。
GR-SAKURA、GR-ROSEの場合、LED_PINとCHAIN_SERIALを適宜変えてください。
#include <Arduino.h>#include <MsTimer2.h>#define LED_PIN A3#define CHAIN_SERIAL Serial2void cyclic_handler(void);bool g_active = false;void setup() { // put your setup code here, to run once: CHAIN_SERIAL.begin(9600); analogWrite(LED_BUILTIN, 50); MsTimer2::set(1600, cyclic_handler); MsTimer2::start();}void loop() { // put your main code here, to run repeatedly: if(g_active == true){ for(int i = 1; i < 256; i++){ analogWrite(LED_PIN, i); delay(3); } for(int i = 1; i < 256; i++){ analogWrite(LED_PIN, 255-i); delay(3); } g_active = false; }}void cyclic_handler(){ if(CHAIN_SERIAL.available()){ char c = CHAIN_SERIAL.read(); if(c >= ' ' && c <= 'z'){ g_active = true; CHAIN_SERIAL.write(c); } }}
それでは、 ワイヤーでつないでいきますよ!
まずは、電源の5VとGNDを全部つなぎましょう。それからTXとRXをチェーンでつないでいきます。
輪の一番最初は体験デモで使用したMP3プレーヤーの5ピン(TX)、そして最後はMP3プレーヤーの6ピン(RX)につないで終端したら、USBをつなぎましょう。
We wish you a Merry Xmas!
がじぇるね岡宮です。
少し記憶があいまいですみませんが、MP3再生側(マスター)は以下のプログラムを実行しています。
#include <WavMp3p.h>#include <SD.h>#include <MsTimer2.h>#define LED_ON HIGH#define LED_OFF LOWvoid cyclic_handler(void);const char message[] = "Merry Xmas ";WavMp3p wavmp3p(44100);void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial2.begin(9600); pinMode(PIN_LED0, OUTPUT); digitalWrite(PIN_LED0, LED_ON); while (!SD.begin()) { Serial.println("Card failed, or not present."); digitalWrite(PIN_LED0, LED_OFF); delay(1000); digitalWrite(PIN_LED0, LED_ON); } wavmp3p.setVolume(1.0); analogWrite(PIN_LED0, 50); MsTimer2::set(1600, cyclic_handler); MsTimer2::start();}void loop() { // put your main code here, to run repeatedly: static File root = SD.open("/"); while(1){ File entry = root.openNextFile(); if (!entry) { // no more files break; } Serial.print(entry.name()); if (entry.isDirectory()) { Serial.print("/"); } else { Serial.println(); wavmp3p.play(entry.name()); } entry.close(); } root.rewindDirectory(); Serial.println("done!"); delay(500);}void cyclic_handler(){ static int count = 0; Serial2.write(message[count]); if(count < sizeof(message)-1){ count++; } else { count = 0; } if(Serial2.available()){ Serial.write(Serial2.read()); }}