とりあえず行ってきてみた

午後を回ってからざっくりと出撃。で、Twitter 名札もらってきた。
写真等はあとで追加掲載(予定。(予定は未定))。  そのほかについてざっと。

  • 東工大の中は綺麗だった。金もってるなぁ。
  • 別役怜(生)を見た。つけまつげがどうしようもなくつけまつげだった。
  • ニコ動なんちょれがでかいブーススペースを陣取って何かやっているようだった。リアルキキの成れの果てみたいな人がいたが、夢を壊してはいけないので撮影はしなかった。
  • やっぱり Arduino が熱かった。熱いというか、イタメシが流行ったりするのと同じノリだと思った。つまりピッツァとかパスタ感覚で楽しめるメカトロの世界。
  • で、ちょっと見ている間にもがんがん売れているようだった。会場では(おおむね)5% OFF だとか。私はパーツを 1点だけしか買えず。でも下手に持っていたら買い込んでいた危険も。イーサネットシールドとか買って「偽秋月パルス」とか挑戦しかねない。
    がんがん買える人が羨ましい。
  • ところで結局オライリーってなんだっけ。(→ Perl とかのえらいひとらしい。日本のエンタメ界でのカドカワみたいな感じだろうか。(違うだろうけどな!))
  • こういう環境の中で、10代後半ぐらいの人は何を目指して何をやろうとするのだろうな、とか、ちょっと考えた。ちょっと考えてやめた。
  • なんだか無性に寂しい気持ちになったりした。
  • まあみんな、楽しそうでいいなと思った。私はあんまりイベント体質ではないので、参加するにしても私自身は裏方に撤するほうが楽しそうな気がしてしまう。
  • っていうか! イタチョコシステムが生きていたのにはビクーリしたよ! ああ、驚いたさ!(っていう言い草も失礼だろ。…いや、そういう話ではなくて。)


で、午後になるまで出撃できなかった理由、午前中いっぱいあたりまでやってたのがこれ。

 なんとなくそれっぽく(首都高フォント的な何か)
白抜き液晶、好きなんですよね。昔の反転現像スライド(青地に白)みたいな風情を醸していて。
より普通な、16 * 2 の液晶でもいける。
 
主役は液晶じゃないんですが… Arduino すっかりないがしろ状態。
ブレッドボード上のオペアンプ(LM358)は現在使用していない。(だから Gain が 1.00)


で、実際やってみて、ここまで簡単なものか、と思うほど簡単ではあったのだけど、処理系とそのガイダンスにはなんともイタリア的おおらかさがアリーノ、で、細かいところでいろいろフォローの小技使いまくったりしている。そういう細かい御託は、あとで追記する(予定。(予定は未以下略))。


ソースは以下。(自前の関数に Bug あったりーので適宜直しています。右左病的な何かが我ながら酷すぎる。)

/*
temperture003

for LM35D, 60, 61
for LCD panel

2009/11/21 
2009/11/22
2009/11/23
2010/08/13 * bugfix
By OkibiLabo.
 */

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11,     5, 4, 3, 2);  // Enable は無視 → GNDへ

const int ledPin = 13;
const int thmPin =  5;

const int pseudoGND = 6;
const int pseudoVCC = 7;
// const int pseudoGND = 18;  //  
// const int pseudoVCC = 17;  //

const float gain = 1.0;
// const byte deg = B11011111;

  byte a[8][8] = {
    {12, 18, 18, 12,  0,  0,  0,  0},  // Degree Mark
    { 9,  5,  1, 12,  1,  5, 11,  0},  // following means
    {31,  1, 31,  0, 31, 21, 31,  0},  //     thermometer ("Ondokei")
    { 0,  3,  2,  3,  2,  4, 21,  0},  //      by Japanese KANJI.
    {14, 31, 17, 31, 17, 14, 29,  0},
    { 1, 23,  3, 17,  7,  4, 23,  0},
    { 1, 25,  7, 17, 25,  9, 25,  0},
    { 0,  0, 24,  0,  0,  0,  0,  0},
    };

        const float thmPitch = 0.01;  // for LM35D , LM61
//        const float thmPitch = 0.00625;  // for LM60 ** 間違っていたので修正 
//        const float thmOffset = 0;    // for LM35D
//        const float thmOffset = 0.424;  // for LM60
        const float thmOffset = 0.6;  // for LM61
        
int aValue = 0;
float temp = 0;
float aRef = 1.1;

void ondokei_LCD()
{
    for(int i = 1; i<=7; i++) {
        lcd.createChar(i, a[i]);
    }
    
  //  lcd.begin(16, 2); 
  lcd.begin( 8, 2); 
  lcd.clear();
  lcd.print("Hello!");
    lcd.setCursor(0, 1);
    for(int i = 1; i<=7; i++) {
      lcd.write(i);
    }
  
      delay(2000);
}

int pickDecimal(float a, int digit)
{
  float d = pow(10, -1 - digit);
  return int((abs(a * d) - abs(int(a * d))) * 10);
}

void setup()   {                
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); 
  pinMode(pseudoGND, OUTPUT);
  pinMode(pseudoVCC, OUTPUT); 
  
    analogReference(INTERNAL);
    aRef = 1.1;
//    analogReference(DEFAULT);
//    aRef = 5;
  
    digitalWrite(pseudoVCC, HIGH);
    digitalWrite(pseudoGND,  LOW);
  
    lcd.createChar(0, a[0]);

  ondokei_LCD();

}

void loop()                     
{
  
      digitalWrite(ledPin, HIGH);
      delay(200);
    
  aValue = analogRead(thmPin);
  temp = ((float)aValue / gain / 1024 * aRef - thmOffset) / thmPitch;
  
      digitalWrite(ledPin, LOW);
      delay(800);  
    
/* */    Serial.print  (aValue);   
/* */    Serial.print  ("   ");   
/* */    Serial.println(temp); 

  lcd.clear();

  lcd.print("Temp:");  
  lcd.setCursor(1, 1);
  lcd.print((long)temp);
    lcd.print(".");
    lcd.print(pickDecimal(temp + 0.05 * temp / abs(temp), -1));
//    lcd.print(deg, BYTE);
    lcd.write(0);
  lcd.print("C");

    lcd.setCursor(8, 0);
  lcd.print("Gain");
  lcd.print(gain);
    lcd.setCursor(8, 1);
  lcd.print("Ref");
  lcd.print(aRef);
  lcd.print("V");
  
}