Wio LTE로 놀아 본다(그 4: 자기 스위치와 초음파 거리 센서)
이번에는 자기 스위치와 초음파 거리 센서를 사용해 본다.
〇센서
자기 스위치
초음파 거리 센서
우선 목표는
자기로 스위치가 들어가면, 그 때의 정면의 대상물에의 거리를 로그에도 출력해 본다.
※추가로 한다고 하면, 일정 거리 이내라면 LED가 빛나게 해 보거나
가나.
이번에도 각 스케치 예를 보면 어느 쪽도 WIOLTE_D38을 사용하도록 쓰고 있다.
전회를 참고로 하여 자기 스위치를 D20으로 해 보기로 한다.
〇 자기 스위치
#include <WioLTEforArduino.h>
//#define MAGNETIC_SWITCH_PIN (WIOLTE_D38)
#define MAGNETIC_SWITCH_PIN (WIOLTE_D20)
#define INTERVAL (100)
WioLTE Wio;
void setup()
{
Wio.PowerSupplyGrove(true);
pinMode(MAGNETIC_SWITCH_PIN, INPUT);
}
void loop()
{
int switchState = digitalRead(MAGNETIC_SWITCH_PIN);
SerialUSB.print(switchState ? '*' : '.');
delay(INTERVAL);
}
전원 ON하는 처리를 추가한 정도.
에서 시험해 보았는데, 움직이고 있는 것 같지만, 핵심의 「자기 검지」의 부분이 지금 하나인 인상.
자석을 붙이거나 떼어내고 있는데, 반응하거나(*의 부분) 하지 않거나. .
자석의 자력이 약한가?
조금 개조.
로그를 내는 방법 등을 참고
htps //w w. 그래, d. 이. jp/bぉg/20180118 아/
#include <WioLTEforArduino.h>
//#define MAGNETIC_SWITCH_PIN (WIOLTE_D38)
#define MAGNETIC_SWITCH_PIN (WIOLTE_D20)
#define INTERVAL (500)
//状態に対する色設定
#define COLOR_SETUP 0, 10, 0
#define COLOR_MEASURE 0, 0, 10
#define COLOR_MAGNETIC 10, 0, 0
#define COLOR_NONE_MAGNETIC 0, 0, 10
#define COLOR_NONE 0, 0, 0
WioLTE Wio;
void setup()
{
SerialUSB.println("____START____________");
SerialUSB.println("### I/O Initialize.");
Wio.Init();
Wio.LedSetRGB(COLOR_SETUP);
SerialUSB.println("### Power supply ON.");
Wio.PowerSupplyGrove(true);
delay(5000);
pinMode(MAGNETIC_SWITCH_PIN, INPUT);
Wio.LedSetRGB(COLOR_NONE);
}
void loop()
{
int sensorValue = digitalRead(MAGNETIC_SWITCH_PIN);
if(sensorValue == HIGH)//if the sensor value is HIGH?
{
//磁石あり
Wio.LedSetRGB(COLOR_MAGNETIC);
SerialUSB.print('*');
}
else
{
//磁石無し
Wio.LedSetRGB(COLOR_NONE_MAGNETIC);
SerialUSB.print('.');
}
delay(INTERVAL);
}
이것이라고 잘 갔다.
아마도 PowerSupplyGrove과 pinMode 사이에 delay가 들어간 것이 포인트입니까?
조금 사이가 필요할지도 모른다.
※라고 할까, 로그 처리 이외라고 그것 밖에 더하고 있지 않고.
〇 초음파 거리 센서
전술 한 자기 센서 처리에 초음파 거리 센서 처리를 더한다.
단순히 스케치대로 추기하면 좋을까 하면 그렇지 않은 모양.
Ultrasonic.hが無いよ
과 오류h tp // 우우키. 그래, ds. 이 m/G로ゔぇㅇlt등 소니 c_랑게 r/
에 Download the UltrasonicRanger Library from Github.
설명한대로 다운로드하여 라이브러리를 설치합니다.
※ZIP를 해동해 어느 쪽으로 카피할까라고 생각하면, IDE에서 그대로 포함 할 수있었습니다.
처리 자체는 거의 고민하지 않고 구현.
#include <WioLTEforArduino.h>
#include <Ultrasonic.h> // https://github.com/Seeed-Studio/Grove_Ultrasonic_Ranger
//#define MAGNETIC_SWITCH_PIN (WIOLTE_D38)
#define ULTRASONIC_PIN (WIOLTE_D38)
#define MAGNETIC_SWITCH_PIN (WIOLTE_D20)
#define INTERVAL (500)
//状態に対する色設定
#define COLOR_SETUP 0, 10, 0
#define COLOR_MEASURE 0, 0, 10
#define COLOR_MAGNETIC 10, 0, 0
#define COLOR_NONE_MAGNETIC 0, 0, 10
#define COLOR_NEAR 10, 10, 10
#define COLOR_NONE 0, 0, 0
Ultrasonic UltrasonicRanger(ULTRASONIC_PIN);
WioLTE Wio;
void setup()
{
SerialUSB.println("____START____________");
SerialUSB.println("### I/O Initialize.");
Wio.Init();
Wio.LedSetRGB(COLOR_SETUP);
SerialUSB.println("### Power supply ON.");
Wio.PowerSupplyGrove(true);
delay(5000);
pinMode(MAGNETIC_SWITCH_PIN, INPUT);
Wio.LedSetRGB(COLOR_NONE);
}
void loop()
{
int sensorValue = digitalRead(MAGNETIC_SWITCH_PIN);
if(sensorValue == HIGH)//if the sensor value is HIGH?
{
//磁石あり
Wio.LedSetRGB(COLOR_MAGNETIC);
SerialUSB.print('*');
measure_distance();
}
else
{
//磁石無し
Wio.LedSetRGB(COLOR_NONE_MAGNETIC);
SerialUSB.print('.');
}
delay(INTERVAL);
}
void measure_distance()
{
long distance;
distance = UltrasonicRanger.MeasureInCentimeters();
SerialUSB.println("");
SerialUSB.print(distance);
SerialUSB.println("[cm]");
if(distance<20)
{
Wio.LedSetRGB(COLOR_NEAR);
}
}
처리 결과는 이런 느낌.
상한값이 얼마나 되는지 모르지만, 이 정도의 값까지는 돌아왔다.
0이 된 것이 있었기 때문에 초음파가 돌아 오지 않으면 0이 될까?
확실히 거리가 20cm 미만인 경우에는 LED의 색이 바뀌도록 하고 있다.
놀아 보면 상당히 재미있다.
동영상으로 찍으면 알기 쉬운 생각도 하지만, 귀찮기 때문에 할애.
소감
잘 생각하면 지금까지 SORACOM의 SIM 부분은 처음에 Harvest에 업로드한 것 이외에는 전혀 사용하지 않는다.
남아있는 GPS 모듈 당을 사용할 때 지도 앱에 표시시키는 것과 같이 해 보면 좋을지도 모른다.
Reference
이 문제에 관하여(Wio LTE로 놀아 본다(그 4: 자기 스위치와 초음파 거리 센서)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryo_naka/items/c433a9c362679cee3d18텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)