Arduinoを使っていて、スケッチを書き込もうとするとエラーが出ることがあります。
その中でも特にしょーもなくて、そしてエラーの原因を見つけるのが難しいエラーがあります。
結論:「スペース」をよく見てください。どこかに「全角スペース」まぎれてませんか?
stray ‘\343’ in program
なんでや!阪神関係ないやろ!(違)
特にきちんとコメントを入れている人がやってしまいがちなミスです。
コメントを制する者はプログラミングを制す?【コメントをガンガン使おう】
これ、「全角スペースがプログラムに入ってるよ(# ゚Д゚)」ってエラーです。
ならストレートにそう書いてくれと…「この行にあるよ」って色を変えて教えてくれるだけ親切だと思いましょう。
「2バイトコード」と「1バイトコード」
または「全角文字」と「半角文字」とも言います。
コンピュータの世界では「文字」を表現するために、いろいろな「文字」に数字の「コード」を割り当てています。
ちなみにこの割り当ては全世界共通です。
例えば半角アルファベットの「A」の文字コードは「65」(16進数です)、漢字の「初」という字は「521D」(UTF-16の場合)が割り当てられています。
1つの文字を1バイト(8ビット)で表すものを「1バイトコード」、2バイト(16ビット)で表すものを「2バイトコード」と呼んでいます。
日本語では2バイトコードは1バイトコードの約2倍の幅を使って1文字を表示することがおおいことから、それぞれ「全角文字」「半角文字」とも呼びますね。
で、なんで唐突にこの話が出てきたのかというと、
Arduino(のコンパイラ)は2バイトコードを認識できない
からです。
そして先ほどのエラーの「\343」というのは「2バイトコードのスペース記号」を意味しています。
だったらストレートにそう書いてくれと…
①日本語を使ってコメントを書いていて→②そのまま(全角入力モードのまま)でスケッチのコメントじゃない場所をいじった
時に起きることがよくあります。
2バイトコードの文字ならまだ見つけやすいんですけど、スペースだとわかりづらいんですよね。
効率のいい探し方
検索機能を使うと一発で出てきます。
「Ctrl」+「F」を押すか、メニューバーの[編集]>[検索]で出てきますので、
検索テキストのボックスに「全角スペース」を入力して[検索]を押すと出てきます。
(ここで入力するのは「全角の」スペースですからね。)
諸悪の根源全角スペースの居場所を突き止めたら、消すなり半角スペースで置き換えるなりすれば解決するはずです。
その他のありがちミス
1 | digitalWrite(13,HIGH) //行末の「;」(←セミコロン)忘れるとか |
1 | digitalWrite(13,HIGH): //行末「:」(←コロン)と間違えるとか(キーボードが隣で形も似ているからなおさら) |
1 2 3 4 5 6 7 8 9 | loop(){ for(int i=0;i<10;i++){ if(digitalRead(12)==LOW){ answer = i*2; }else{ answer = i*3; } } //カッコの数が合わなくなるとか(本来もう一つ「}」が必要) |
1 2 | for(int i=0,i<10,i++){ //for文の区切り文字を間違えるとか(本来は「;」セミコロン) } |
ありがちだと思います。一通り(いや何度も)やってます。
コメント