『ボヘミアン・ラプソディ』はなぜ人々を魅了したのか >>

Adafruit feather nrf52832という、BLE搭載のadafruit社のマイコンボードがあります。
このマイコンにst7735sの160×80ドットの0.96インチのtft液晶をつなぎ、Bluetoothでマイコンとスマホを接続し、tftに時刻をデジタル表示したいです。
どんなBluetoothのプログラムはまだ勉強中でよくわからないので、どんなプログラム(ソースコード)をすればいいか教えてください。
tft液晶のピンは、左からGND,VCC,SCL,SDA,RES,DC,CS,BLKです。

A 回答 (2件)

まず分割します。


そしてできそうなところからプログラムを書きます。
できたところは可能な限りそのままに保ちつつ、既にできた部分を使って新たにできそうなところを書きます。

試しに軽く分割してみると
・マイコンを動かす(例えばLEDを点滅させる)
・Bluetoothでマイコンと何か確実に動く機器を接続する
・スマホを動かす(例えばHello,Worldと表示する)
・Bluetoothで何か確実に動く機器とスマホを接続する
・時刻を取得する(そしてどこでもいいので、どんな形式でもいいので、出力する)
・時刻をデジタル表示する
・マイコンからTFTに何か表示する
こんなところでしょうか。
    • good
    • 0

???


Bluetoothって無線通信だから、ピン配列なんて関係ないですよ。その名称から推察するに、有線シリアルのSPI通信だと思います。以下は参考になるのでは?

http://tech.yoshimax.net/archives/271
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q関数によって、MAX_PATHの値が異なる理由を教えてください。

MAX_PATHは260固定なのに、関数によって異なる理由を教えてください。

CreateFileは259文字まで、それ以上は関数が失敗します。
MakeSureDirectoryPathExistsは248文字まで、それ以上は関数が失敗します。
renameは220文字まで、それ以上は関数が失敗します。

Aベストアンサー

昔のファイルシステム(FAT)ではパス名の最長が255文字に制限されていました。
それに、ドライブレター等(C:¥)3文字とファイル名(8+3)の間のピリオド1文字で
255+3+1=259文字が最長パスです。
さらに、C言語で作成されたライブラリでは、
文字列の末尾にはNull文字(0x00)を付ける約束になっています。
それを含めて、MAX_PATH=260 となっています。
今どきのファイルシステム(NTFS)とはかなり違いますよね。
そんな訳で、時代とともに移り変わるシステムの中身が、
統一が取れているはずと思う方がおかしい。

QLCDの制御について

全く初めて、PICとLCDを使って自作のストップウォッチを作ろうと思っています。
初めは7セグLEDを使う予定でしたが、検索中に見つけた「EDC190」が目的に見合っていると思い、これにしました。
いくつかのサイトでデータシートを確認したのですが、詳細が書かれていなかったため、3V~5Vの直流電圧で作動すると思っていたところ、よくよく探してみると
http://www.santechdisplay.co.jp/product/standard/StaticTN_74595_16F88/StaticTN_74595_16F88.html
http://awawa.hariko.com/avr_lcd_drive.html
のようにパルス波で制御するようです。
どのくらいの周波数が適切か、ご存知の方いらっしゃいますか?

Aベストアンサー

点滅が見えないためには映画が24FPSなので最低それくらいですが、面倒なら直流でも寿命が縮みますが動きます。

Qスーパーハッカーやホワイトハッカーが未だにプログラムをキーボードを使ってアナログな入力を10年前と変

スーパーハッカーやホワイトハッカーが未だにプログラムをキーボードを使ってアナログな入力を10年前と変わらずに未だにガチガチキーパンチャーしてるのって一般人から見たら超絶ダサいらしいですよ。

マツコデラックスがスーパーハッカーがプログラムをキーボードで打っていたのを見て「まだキーボードで打ってるんだ。人工知能や音声を文字化出来るようになってるのに10年前と変わらずキーボードで打ってるの?!」と言っていましたが、本当にそうだなと思いました。

未だにキーボードでプログラミングしてるって古くさいというか自動化、自動化と言ってる割にプログラマーが1番アナログだったりして。

Aベストアンサー

それは普通の文章入力しか想像できない人の発想ですね。

プログラミング言語では記号を多用しますが、これをいちいちダブルコーテーションだのアットマークだの言うのは手間だし、実は記号じゃなくてダブルコーテーションは”じゃなくそのままダブルコーテーションっていう文字列にしたかったんだけど…みたいな区別に困ることもあります。その辺をきれいに解決する手段が今のところないってこと、また「キーボード入力の方が話すよりも速くてしかも正確に入力できる」と言う事実があること、またいちいち口に出すと言うことは意外に労力を要すること、といった事情から音声認識でどうにかしようという空気にならないのでしょう。

QC#について質問【足し算】

C#超初心者です。

標準入力から2つの正の整数a,bが入力されます。aとbを足した数を出力するのですが、

入力は以下のフォーマットで与えられます。
a b
aとbの間には半角スペースが入っています。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
aとbを足した数を出力して下さい。
最後は改行し、余計な文字、空行を含んではいけません。

入力例1
1 1

出力例1
2

入力例2
0 99

出力例2
99


public class Sum{
public static void Main(string[]args){
var line = System.Console.ReadLine();
int[]ab = line.Split(' ');
System.Console.WriteLine(ab[0] + ab[1]);
}
}


Splitを使って半角スペースで文字列を分割しましたが。int型ではないので足し算をしても「11」に
なるようです。string型からint型への変換は可能でしょうか?
また上記のコードも間違えているのでどなたかご教授をお願い致します。

C#超初心者です。

標準入力から2つの正の整数a,bが入力されます。aとbを足した数を出力するのですが、

入力は以下のフォーマットで与えられます。
a b
aとbの間には半角スペースが入っています。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
aとbを足した数を出力して下さい。
最後は改行し、余計な文字、空行を含んではいけません。

入力例1
1 1

出力例1
2

入力例2
0 99

出力例2
99


public class Sum{
public static v...続きを読む

Aベストアンサー

int.Parse(ab[0]) + int.Parse(ab[1])

QC#言語学んで

実際にプログラム打ち込んでも無反応です
何か打ち込んでもダメです
そしてエラーが起きます

Aベストアンサー

> そしてエラーが起きます

という事は、開発環境なんかはインストール、設定されてるって事ですね?

まずは、サンプルプログラムを打ち込む、というかコピペしてみては。

Microsoft .NET - Hello World -- 最初のプログラム (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/hello-world-your-first-program

で、エラーが出るなら、エラーメッセージの内容を提示すると、問題解決の手掛かりになるかも。

QPICで世界時計を作りたいのですが

PIC16F1938で世界時計を作ろうと模索中です。
TIMER2で基準となるUTC時刻を刻むことはできましたが、
SWを押すたびにJST、NY、・・・。と表示を変えてゆきたいのですが、
いざプログラムを組んでテストをしてみたところ、通電し初期値のUTCが無事表示されたのですが、
SWを押したところNY時間が文字化けしてしまいました。
詳しい方よろしくお願いします。


--------------------下記コード抜粋--------------------

time = 14400; // 午前4時ジャストからカウント開始
time_2 = 0;
day = 1;
day_2 = 2;

if(SW == 0){ // UTC
time_2= time;
day_2= day;

}else if(SW == 1){ // JST
if((time + 9*3600) >= 24*3600){
time_2 = 0;
time_2 = (time + 9*3600) % 24*3600;
day_2 = day+1;
}else{
time_2 = time + 9*3600;
}
}else if(SW = 2){ // NY
if((time - 5*60*60) <= -1){ // NY (冬時間-5時間)
time_2 = (time - 5*60*60) % 24*60*60;
day_2=day-1;
}else{
time_2 = time - 5*60*60;
}
}

PIC16F1938で世界時計を作ろうと模索中です。
TIMER2で基準となるUTC時刻を刻むことはできましたが、
SWを押すたびにJST、NY、・・・。と表示を変えてゆきたいのですが、
いざプログラムを組んでテストをしてみたところ、通電し初期値のUTCが無事表示されたのですが、
SWを押したところNY時間が文字化けしてしまいました。
詳しい方よろしくお願いします。


--------------------下記コード抜粋--------------------

time = 14400; // 午前4時ジャストからカウント開始
time_2 = 0;
day = 1;
day_2...続きを読む

Aベストアンサー

具体的になにがどう「文字化け」してるのか知らないけど, 例えば
time_2 = (time + 9*3600) % 24*3600;

time_2 = (time - 5*60*60) % 24*60*60;
の右辺の意味を正しく理解できていないとか?

ああ,
else if(SW = 2){ // NY
のところも変だな.

QC言語のポインタの価値

下名は、プログラムの完全な素人ではないのですが、

C言語の初心者が、ポインタがわかりにくいということがよくあると思います。
例えば、pythonや他の言語では、ポインタはなかったと思います。

C言語において、ポインタは、必須だったのでしょうか?
それとも、単に、配列ぐらいあれば、言語として、問題なかったのでしょうか?
C言語が、ポインタの機能で何を実現できているのか、理解を深めたく。

Aベストアンサー

> C言語が、ポインタの機能で何を実現できているのか

データをコピーする手間を無くすことができます。
例えば要素の合計を求める関数を作って、その引数として要素100個の配列を渡すとしましょう。
関数の実行時には一時的にメモリ上に必要な作業エリアを確保します。
ポインタが無い場合は、作業エリアに要素100個を全てコピーしてきて、それを元に計算を始めます。
でもポインタがある場合は、元々の配列のアドレスだけをコピーしてきて、そのアドレスを進めながらアドレス先のデータを取得するという動作で計算を進めることができます。
データが1000個、10000個だったら、コピーする手間が更に余計にかかりますよね?


> C言語において、ポインタは、必須だったのでしょうか?

C言語はアセンブリ言語の面倒くささを改善するために作成されました。
アセンブリ言語でのプログラムを経験されればお分かりになると思いますがアクセスするメモリのアドレスを決定するのに「間接アドレッシング」が多用されます、これがポインタそのものなんですよね。
従ってアセンブリ言語の延長として開発されたC言語にはポインタ機能は当然存在すべきものだったと思います。


> 例えば、pythonや他の言語では、ポインタはなかったと思います。

他の方も仰っていますが見えなくなっているだけでポインタは存在します。
例えばPythonでインスタンスを宣言した場合の

 p = MyClass()

このpはポインタそのものです。
ただ、ポインタであることを意識しなくても良いように考えられているだけなんですよね。


> C言語の初心者が、ポインタがわかりにくいということがよくあると思います。

これはC言語でのポインタの記述の仕方が分かりにくいというのも多分にあると思います。
当初は「分かっている人」だけが使う為に設計された言語ですから、あまり考慮されなかったのですね。
ですから後に続く言語は、ポインタを意識しなくても良い様になったのではないでしょうか?

> C言語が、ポインタの機能で何を実現できているのか

データをコピーする手間を無くすことができます。
例えば要素の合計を求める関数を作って、その引数として要素100個の配列を渡すとしましょう。
関数の実行時には一時的にメモリ上に必要な作業エリアを確保します。
ポインタが無い場合は、作業エリアに要素100個を全てコピーしてきて、それを元に計算を始めます。
でもポインタがある場合は、元々の配列のアドレスだけをコピーしてきて、そのアドレスを進めながらアドレス先のデータを取得するという動作で計...続きを読む

Qナップザック問題で複数の経路が存在する場合

ナップザック問題で、たとえば、
n=4個の品物で、重さと価値が(w, v) = {(2, 3), (1, 2), (3, 4), (2, 2)}
で、重さの総和W=5を超えないように選んだ時、価値の総和の最大値を求める問題で、答えは、
7(0, 1, 3番の品物を選ぶ)
7(0, 2番の品物を選ぶ)
の2通りありますが、価値の総和の最大値だけでなく、2分木を使って2分木ノードの経路もいっしょに表示させたいのですが、この場合あるノードのleftとright両方が選ばれることになります。これらの情報は2分木を作成したときに、各ノードの情報として、left=0、right=1、both=3などとしてどの枝が選ばれたかを書き込んでおいて、rootから辿るようにしています。
この場合、bothにたどり着いた時点で、leftとrightを順番に再帰的に呼び出すと、後に呼んだ
rightの分岐前までのノードの情報がなくなるので、とりあえず、ベクターにこの情報を入れて
おいて、後から欠落したノードの情報を前の経路のノード情報から埋めて使うようにしているの
ですがかなり大変です。(特に何重にも分岐した場合にも対応しないといけないので。)
とりあえず、作ってみて問題なく表示してくれるようにはなったのですが、このあたり既に
ご経験のある方で、もっと簡単でいい方法があるよという場合はご教示願えたらと思います。

ナップザック問題で、たとえば、
n=4個の品物で、重さと価値が(w, v) = {(2, 3), (1, 2), (3, 4), (2, 2)}
で、重さの総和W=5を超えないように選んだ時、価値の総和の最大値を求める問題で、答えは、
7(0, 1, 3番の品物を選ぶ)
7(0, 2番の品物を選ぶ)
の2通りありますが、価値の総和の最大値だけでなく、2分木を使って2分木ノードの経路もいっしょに表示させたいのですが、この場合あるノードのleftとright両方が選ばれることになります。これらの情報は2分木を作成したときに、各ノードの情報とし...続きを読む

Aベストアンサー

こんにちは、No.2です。(何故"プンプン"?)

ナップサック問題云々はあまり関係なくて、
要は二分木の複数の経路情報をどうやって保持するかって質問ですね。


> なので、ベクターに入る情報は、
> {(0, 5) (1, 3) (2, 3) (3, 0) (4, 0) (2, 2) (3, 2) (4, 0)}
> になります。

No.6さんの仰るとおり、一つの「ベクター」に複数の経路情報を追加していくのが意味不明です。


以下の様にすれば良いのではないでしょうか。

1.「ベクター」は配列にする、配列の一つの要素に一つの経路情報を保持させる。

2.ノードをルートから辿ってbothのノードになったら其処までの経路情報を一時保管する
  ノードに保管場所を設ける
  補足での例だと、(1,3)ノードに{(0, 5) (1, 3)}を一時保存

3.leftノードの経路を最後までたどり、取得した経路情報を配列「ベクター」に要素として追加
  Vec[0] = {(0, 5) (1, 3) (2, 3) (3, 0) (4, 0)}

4.ノードを戻りbothノードまで戻ったら、一時保存した経路情報{(0, 5) (1, 3)}を取り出す

5.4の経路情報にrightノードを最後までたどった経路情報を追記していく
  {(0, 5) (1, 3) (2, 2) (3, 2) (4, 0)}

6、5の経路情報を配列「ベクター」に要素として追加
  Vec[1] = {(0, 5) (1, 3) (2, 2) (3, 2) (4, 0)}


これで複数の経路情報が取得できます
 Vec[0] = {(0, 5) (1, 3) (2, 3) (3, 0) (4, 0)}
 Vec[1] = {(0, 5) (1, 3) (2, 2) (3, 2) (4, 0)}

こんにちは、No.2です。(何故"プンプン"?)

ナップサック問題云々はあまり関係なくて、
要は二分木の複数の経路情報をどうやって保持するかって質問ですね。


> なので、ベクターに入る情報は、
> {(0, 5) (1, 3) (2, 3) (3, 0) (4, 0) (2, 2) (3, 2) (4, 0)}
> になります。

No.6さんの仰るとおり、一つの「ベクター」に複数の経路情報を追加していくのが意味不明です。


以下の様にすれば良いのではないでしょうか。

1.「ベクター」は配列にする、配列の一つの要素に一つの経路情報を保持させる。

2...続きを読む

Q競プロに興味があるのですが、やろうと思ったら数学科の人でないと難しいでしょうか? ※工学部に進学する

競プロに興味があるのですが、やろうと思ったら数学科の人でないと難しいでしょうか?
※工学部に進学するので、高校数学であれば3まではやってあります。

Aベストアンサー

そう思うならまずはやってみたらどうでしょうか?
興味があるならAtCoderは知ってるでしょうからまずはABC問題から
どこまでを難しいとするのかは疑問ですが
中学生の私はABCまでは解けますがD問題は数学的にもアルゴリズム的にも難しいですね

QC#について質問【複数の.datファイルからデータを取得後csvファイルでリストを作成】

いつもお世話になります。
複数の.datファイル(カンマ区切りの4~5列、約800行程度)
ProcessData,LOT_ID,3,AP0076686.00C,
ProcessData,LOT_ID_SUB,3,AP0076686.00,
ProcessData,LOT_NO,3,AP0076686,
ProcessData,WAFER_ID,3,AP0076686.19,
ProcessData,WAFER_NO,1,19,
ProcessData,PRODSPEC_ID,3,T5DH20001-00001.00,
ProcessData,PRODGRP_ID,3,T5DH2,
ProcessData,PRODGRP_BIND,3,T5DH2,
ProcessData,MAIN_MAINPD_ID,3,A6L511NY.00,
ProcessData,MAINPD_ID,3,A6L511NY.00,
ProcessData,FLOW_TYPE,3,Main,
ProcessData,FLOW_TYPE_NO,1,1,
ProcessData,D_SEQNO,1,169,
ProcessData,OP_NO,3,PNH PEP.MA1,
ProcessData,OP_NO_NAME,3,本処理,
ProcessData,PD_IDENT,3,PPNHIMA1.00,
ProcessData,PD_IDENT_NAME,3,PEP,
ProcessData,EQP_GROUP_CODE,3,PKRF,
ProcessData,EQP_GROUP_NAME,3,KrF SCANNER(SK3000 + ES5),
ProcessData,EQP_GROUP_BIND,3,PKRF,
ProcessData,EQP_ID,3,PKRF004,
ProcessData,PH_RECIPE_ID,3,PES5MIX,
ProcessData,RCP_NAME_SPACE,3,PEPMA,
ProcessData,LC_RECIPE_ID,3,PKRF.01,
ProcessData,RECIPE_ID,3,PEPMA.PES5MIX,
ProcessData,S_DATE,4,2019/01/24 12:47:09,
ProcessData,E_DATE,4,2019/01/24 12:47:51,
ProcessData,CAST_ID,3,PA0-00349,
ProcessData,SLOT_NO,1,19,

の中からSplitを用いて string[]dataTemp = fileData.Split(',');で
(ProcessData[0],EQP_ID[1],3[2],PKRF004[3],)のように配列に格納して
ifを使ってdataTemp[1] == "EQP_ID"の時にdataTemp[3](PKRF004)を
    dataTemp[1] == "LOT_ID"の時にdataTemp[3] (AP0076686.00C)を
    dataTemp[1] == "WAFER_ID"の時にdataTemp[3] (AP0076686.19)を
dataTemp[1] == "S_DATE"の時にdataTemp[3](2019/01/24 12:47:09)を
新たにCSVファイルを作成して上記のデータを入力したリストを作りたいのですが、C#初心者で
色々と試行錯誤しましたが知識が足りないようです。。。。


リストについてはヘッダーなどは必要ありません。.datが大量にあるので一列にEQP_ID、LOT_ID、WAFER_ID、S_DATEが並んだ状態で何100行とある状態リストを作成したいです。

詳しい方ご教授をお願いいたします。

いつもお世話になります。
複数の.datファイル(カンマ区切りの4~5列、約800行程度)
ProcessData,LOT_ID,3,AP0076686.00C,
ProcessData,LOT_ID_SUB,3,AP0076686.00,
ProcessData,LOT_NO,3,AP0076686,
ProcessData,WAFER_ID,3,AP0076686.19,
ProcessData,WAFER_NO,1,19,
ProcessData,PRODSPEC_ID,3,T5DH20001-00001.00,
ProcessData,PRODGRP_ID,3,T5DH2,
ProcessData,PRODGRP_BIND,3,T5DH2,
ProcessData,MAIN_MAINPD_ID,3,A6L511NY.00,
ProcessData,MAINPD_ID,3,A6L511NY.00,
ProcessData,FLOW_TYP...続きを読む

Aベストアンサー

質問内容が多岐に渡ってきているため、どこまで出来て、どこが出来ないのか、を整理して、
改めて質問を行うことをお勧めします。

今できないのは、元の質問内容ではなく、それぞれのロジックの書き方を理解していませんよね。
C#の文法。
対象ディレクトリ内のファイルの一覧を得るにはどうすればいいのか。
ファイルの読み込み、書き出しをするにはどうすればいいのか。
繰り返し処理するにはどうすればいいのか。
など。

最終目的を質問しても、誰も正解は教えてくれませんし、ネットには正解は転がっていません。
知識、情報を組み合わせて正解を作り上げるので。

そのため、実現するためのプロセスを細分化し、プロセス単位に方法論をネットで調べるとか、質問するとかになると思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング