### 前提・実現したいこと
Arudiuno UNOプラグラムについて
arduino初心者です。よろしくお願いいたします。
実験でコイル巻線機を作っていて、カウントアップをLCDに映したいのですが、
非接触の磁気センサーのパルスを外部割り込みとして機能させようとしたところ、カウントされず、X軸モーターもとまってしまいました。
色々と書き込んで試しているのですが、訳が分からなくなってしまったので、いったんソースコードを公表しアドバイスいただけたらと思いました。
用語などまだ体に染みついていないため、なるだけ噛み砕いてくださると幸いです...
配線図です。手書きで申し訳ありません。
Arduino-L298n-ステッピングモーター
-L298n-DCモーター
-I2C-LCD
-非接触センサー
(マグネットが最大に近づいた時にデジタルテスターで2pin~GND間で5.5vの電圧を確認できました
。オシロスコープでも確認できました。
現状はDCモーターには取り付けず手でつけたり離したりしている状況です。
近づいている時は常に5.5Vです。距離が遠のくと徐々に電圧降下します。
もともと9000RPMくらいまで対応できるセンサーです。)
やりたいこと
/DCモーターでコイル巻く
/X軸で左右にコイルを振る
/LCDでカウントアップ
(スイッチオンでスタート。規定回数でストップ。までを目指していますが、ひとつひとつ解決しながら覚えていきたいです)
発生している問題・エラーメッセージ
コンパイルはできていますが希望の動作ではないです
該当のソースコード
C言語 Arudiuno
1 2#include <Stepper.h> 3#include<LiquidCrystal_I2C.h> 4#include<Wire.h> 5 6 7 8 LiquidCrystal_I2C lcd(0x27,16,2);//LCD情報 9 Stepper myStepper(200, 8, 9, 10, 11);//X軸モーター 10 volatile int count = 0; //カウント基準 11 12 //2ピンをパルスインにした割り込み Count_pinの宣言 13 void Count_pin(void); 14 //2ピンにパルスインした時にカウントアップ 15 void Count_pin(void){ 16 if(digitalRead(2) == HIGH){ 17 count=count+1; 18 lcd.setCursor(0, 1); // LCD2行目指定 19 lcd.print("Count___"); 20 lcd.print(count); 21 }} 22 23void setup() { 24 //パルスイン 25 pinMode( 2, INPUT_PULLUP); 26 attachInterrupt(0,Count_pin, RISING); //2ピン=0, if関数, HIGHになった時に関数呼び出す 27 28 lcd.init(); // LCDの初期化 29 lcd.backlight(); // LCDバックライトの点灯 30 lcd.setCursor(0, 0); // LCD1行目指定 31 lcd.print("Coil Turn Count"); // 文字の表示 32 lcd.setCursor(0, 1); // LCD2行目指定 33 lcd.print("Count___"); 34 lcd.print(count); // カウントアップの変数を入れたい 35 36 myStepper.setSpeed(200);//X軸動作速度 37 38 //DCモーター 39 pinMode(3, OUTPUT);//enA 40 pinMode(4, OUTPUT); 41 pinMode(5, OUTPUT); 42 43 Serial.begin(9600); 44} 45 46void rot1(){ 47 48 //DCモーター制御 49 digitalWrite(4, HIGH);//正転 50 digitalWrite(5, LOW); 51 analogWrite(3, 80); 52 53} 54 55void rot2(){ 56 57 //X軸制御 58 myStepper.step(250); 59 delay(10); 60 myStepper.step(-250); 61 delay(10); 62 63} 64 65 66 67void loop() { 68 69 rot1(); 70 delay(10); 71 rot2(); 72 delay(10); 73 74} 75 76
試したこと
割り込み用のCount_pinを宣言しなければ、DCとステッピングモーターは望みの動作をしてくれます。
なのでカウントアップ用の割り込みの書き方がいけないことまではわかるんですが、書き込んでいてわからなくなってしまいました。
補足情報(FW/ツールのバージョンなど)
ARUDIUNO UNO R3 FW 1.8.16
回答3件
あなたの回答
tips
プレビュー