質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

3回答

5304閲覧

arduinoと温度センサ

very

総合スコア12

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

1グッド

3クリップ

投稿2014/12/10 20:21

arduinoと温度センサ
arduinoで温度センサを自作しようと考えています。
そこで、7セグLED温度センサのPICをarduinoで代用出来ないかと考えました。マイコン→Arduino制御
![イメージ説明]WIDTH:600
構成としては、図の自作した7セグ温度センサー(LM35)から電圧値を読み取り、マイコンの代替としたArduino内でA-D変換を行い7セグLEDにデジタル信号を伝え、動作させる、というものです。
温度センサLM35の温度係数1℃=10mV

マイコン → Arduinoへのpin割り当て
マイコン(RA0) → アナログ入力pin(A0)
マイコン(RB0) → Arduinoのデジタル出力pin6
マイコン(RB1) → Arduinoのデジタル出力pin7
マイコン(RB2) → Arduinoのデジタル出力pin8
マイコン(RB3) → Arduinoのデジタル出力pin9
マイコン(RB4) → Arduinoのデジタル出力pin10
マイコン(RB5) → Arduinoのデジタル出力pin11
マイコン(RB6) → Arduinoのデジタル出力pin12
マイコン(RB7) → Arduinoのデジタル出力pin13

マイコン(RA2) → Arduinoのデジタル出力pin1
マイコン(RA3) → Arduinoのデジタル出力pin2
マイコン(RA4) → Arduinoのデジタル出力pin3

上記での割り当てとした7セグメントLED "2" 出力の例
pin6 HIGH
pin7 HIGH
pin8 LOW
pin9 HIGH
pin10 HIGH
pin11 LOW
pin12 HIGH

[質問]
電圧値を読み取り、AD変換を行い、7セグメントLEDに温度に準拠した信号を送り点灯させたいのですが、C++でArduinoにどのようなプラグラムを書き込んだらいいのか分かりません。もしよろしければ、プログラムの構成や、内容などを教えて頂けると嬉しく思います。

UDON3👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UDON3

2018/06/02 12:58

Arduinoの種類などお願いします
guest

回答3

0

Arduinoには7セグメントLED用の「SevSeg」というライブラリがあります。

LM35ではないですが、HDC1000というI2C出力のセンサを使って実験したことがありますのでご参考に
HDC1000と7Seg LEDを使って温度湿度を測定

LM35はDATASHEETを見ると温度に比例して電圧値を出力するようですのでArduinoの「analogRead()」でAD変換して読み取れると思います。

PICのRA0となっているところをArduinoのA0~A5のどれかに接続すればいいと思います。

投稿2016/10/16 15:27

ryood

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラムというよりかは回路についてのアドバイスなのですが、トランジスタなんかを使わなくても、IOピンをLOWにすれば0V(GNDにつないだのとと同じような状態)になるため、大きな電流を流さないならなくても問題はないと思います。ほかに理由があるなら別ですが。4桁の7セグメントLEDを動かすプログラムなら今作っているので、参考になるかは分かりませんがどうぞ。

const int com[] = {19, 13, 3, 4, 2}; const int anode[] = {7, 5, 8, 10, 11, 9, 6, 12}; int DataSave; // LEDcon4で使う数値計算用 int Data1; // 現在のCdsセルのデータ格納 int Data2; // 過去ののCdsセルのデータ格納 int count; // 今までに回転した回数を記録する unsigned long Time; // プログラムがスタートしてからの時間を格納する int TimeD1; // int TimeD2; // int mm = 376; // 円周 int RPS; //RPS(一秒間に回転する回数の格納用) const int number[] = { // LED点灯パターンを2進数で記録 0b11111100, //0 0b01100000, //1 0b11011010, //2 0b11110010, //3 0b01100110, //4 0b10110110, //5 0b10111110, //6 0b11100100, //7 0b11111110, //8 0b11110110, //9 }; void setup() { // for(int i = 0;i <= 13;i++){ pinMode(i, OUTPUT); } pinMode(19, OUTPUT); for(int i = 14;i <= 17;i++){ pinMode(i, INPUT); } for(int i = 0; i <= 5; i++){ digitalWrite(com[i], HIGH); } Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: Data1 = analogRead(4); if(Data1 < 700 && Data2 > 700){ count++; Time = millis(); TimeD2 = TimeD1 - Time; TimeD1 = Time; } RPS = 1000 / TimeD2; Serial.println(analogRead(4)); LEDcon4(abs(RPS % 10000), false, false, false, 2); /* LEDcon4(count, false, false, false, 2);*/ Data2 = Data1; } void LEDcon4 (int Input, bool option , bool option1, bool option2, int comen){ DataSave = Input; for (int i = 3; i >= 0; i--){ digitalWrite(com[i], LOW); if(i == 3 - comen){ LEDcon(DataSave % 10,true); } else { LEDcon(DataSave % 10,false); } delay(1); ClearSeg(); digitalWrite(com[i], HIGH); DataSave = DataSave / 10; } digitalWrite(com[4], LOW); if (option == true){ digitalWrite(anode[0],HIGH); } if (option1 == true){ digitalWrite(anode[1],HIGH); } if (option2 == true){ digitalWrite(anode[2],HIGH); } delay(1); digitalWrite(anode[0],LOW); digitalWrite(anode[1],LOW); digitalWrite(anode[2],LOW); digitalWrite(com[4], HIGH); } void LEDcon (int a,bool come){ for (int b = 0; b <= 7; b++){ digitalWrite(anode[7 - b], number[a] & (1 << b) ? HIGH : LOW); } if (come == true){ digitalWrite(anode[7],HIGH); } } void ClearSeg (){ for (int b = 0; b <= 7; b++){ digitalWrite(anode[7 - b], LOW); } }

投稿2018/06/02 12:55

編集2018/06/02 12:56
UDON3

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

面白そうですね。
Arduinoではなかったですが以前似たものでドットマトリクスLEDの操作に悪戦苦闘したことがあります。

さて、本題ですが温度センサも7セグLEDもArduinoではよく使われるネタです。
以下のページを参考にスケッチを組み合わせることで実現できると思います。
温度センサー(LM61CIZ)の使い方
4桁7セグメントLEDで始めるArduino

また、通常はArduinoのプログラムを書く際にC/C++をそのまま書くことはないのでその辺りの解説を以下のページで見ておくと取っ付き易いかと思います。
Arduino言語 = C/C++言語? Arduinoコードの仕組み

投稿2014/12/11 00:34

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問