nüno ver.2 TINY 키트를 M5Stack에서 사용해보기
M5Stack과 제휴하는 기사입니다.
nüno ver.2 TINY 키트란?
nüno ver.2 TINY 키트에 대한 자세한 내용은 아래 기사를 참조하십시오.
M5Stack과의 접속 방법
아래는 위의 기사에서
「플렉시블 기판과 리지트 기판을 접속」
까지 완료하는 것으로 진행합니다.
주의점
M5Stack의 I2C의 Grove 단자는 전압이 5V입니다.
nüno에서 사용하는 MTCH6102는 허용 전압이 4V까지로 되어 있으며, 접속하면 고장의 원인이 됩니다.
(필자도 당초 그 사양을 눈치채지 못하고, IC를 사용할 수 없게 되어 버렸습니다)
이를 피하기 위해 M5Stack 시리즈와 연결할 때,
전원을 I2C가 아닌 3.3V 핀에서 잡아야합니다.
이 이미지처럼 nüno 기판에서 나오는 Grove 케이블
SDA를 GPL 21番
에 연결하고 SCL을 22番
에 연결하고
VDD를 3.3V
에 연결하고 GND를 GND
에 연결하여 응답 할 수 있습니다.
Grove 케이블의 케이블 색상은 제조업체마다 다르므로 주의하십시오.
M5Stack의 Grove 케이블의 사양에 대해서는 아래의 기사에서도 소개되고 있습니다.
프로그램
아래는 M5Stack의 LCD 디스플레이에 센서 값을 표시하는 샘플 프로그램입니다.
nüno를 Arduino에서 사용하려면 MTCH6102 용 라이브러리를 포함해야합니다.
MTCH6102의 라이브러리는 다음 파일에서 빌립니다.
#include <M5Stack.h>
#include "MTCH6102.h"
#define ADDR 0x25
#define ScreenWidth 320
#define ScreenHeight 240
MTCH6102 mtch = MTCH6102();
int len = 8;
void setup() {
// Initialize the M5Stack object
M5.begin();
//Wire.begin();
M5.Power.begin();
//Serial.begin(115200);
delay(100);
Serial.println();
Serial.println("start");
//Wire.begin();
mtch.begin();
mtch.writeRegister(MTCH6102_MODE, MTCH6102_MODE_STANDBY);
mtch.writeRegister(MTCH6102_NUMBEROFXCHANNELS, 0x08);
mtch.writeRegister(MTCH6102_NUMBEROFYCHANNELS, 0x03);//最低3点必要なため
mtch.writeRegister(MTCH6102_MODE, MTCH6102_MODE_FULL);
byte data;
// the operating mode (MODE)
data = mtch.readRegister(MTCH6102_MODE);
Serial.print("MODE: ");
Serial.println(data,BIN);
data = mtch.readRegister(MTCH6102_NUMBEROFXCHANNELS);
Serial.print("NUMBEROFXCHANNELS: ");
Serial.println(data);
data = mtch.readRegister(MTCH6102_NUMBEROFYCHANNELS);
Serial.print("NUMBEROFYCHANNELS: ");
Serial.println(data);
mtch.writeRegister(MTCH6102_CMD, 0x20);
delay(500);
}
void loop() {
M5.Lcd.setCursor(0, 70);
byte data;
float sensVals[10]={0,0,0,0,0,0,0,0,0,0};
//背景ライン
for(int i=0; i<len; i++){
M5.Lcd.drawLine((i+1)*35, ScreenHeight-40, (i+1)*35, 0, 0x0000cc);
}
for(int i=1; i<11; i++){
M5.Lcd.drawLine(0, i*20, ScreenWidth, i*20, 0x0000cc);
}
Serial.print("SENSORVALUE_RX <i>: ");
//for (byte i = MTCH6102_SENSORVALUE_RX0; i < MTCH6102_SENSORVALUE_RX0+10; i++) {
for (int i = 0; i < len; i++) {
data = mtch.readRegister(MTCH6102_SENSORVALUE_RX0+(i+2));
Serial.print(data);
Serial.print(", ");
sensVals[i] = data;
M5.Lcd.fillRect(30+(i*35), ScreenHeight-20, 30, 10, TFT_BLACK);
M5.Lcd.setCursor(30+(i*35), ScreenHeight-20);
M5.Lcd.print(data);
}
//グラフ線の描画
int leftMargin = 0;
for (int i = 0; i<len+1; i++){
float prev;
float current;
if(i==0){
prev = 0;
}if(i==len+1){
current = 0;
}else{
prev=sensVals[i-1];
current = sensVals[i];
}
M5.Lcd.drawLine(leftMargin+(i*35), 200-(prev/255)*200, leftMargin+((i+1)*35), 200-(current/255)*200, TFT_WHITE);
}
delay(50);
//グラフ線の消去
for (int i = 0; i<len+1; i++){
float prev;
float current;
if(i==0){
prev = 0;
}if(i==len+1){
current = 0;
}else{
prev=sensVals[i-1];
current = sensVals[i];
}
M5.Lcd.drawLine(leftMargin+(i*35), 200-(prev/255)*200, leftMargin+((i+1)*35), 200-(current/255)*200, TFT_BLACK);
}
Serial.println();
M5.Lcd.println();
M5.update();
}
이것으로 M5Stack의 동작이 완료됩니다!
Reference
이 문제에 관하여(nüno ver.2 TINY 키트를 M5Stack에서 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tendots/items/ca7542da7918966cf603
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래는 위의 기사에서
「플렉시블 기판과 리지트 기판을 접속」
까지 완료하는 것으로 진행합니다.
주의점
M5Stack의 I2C의 Grove 단자는 전압이 5V입니다.
nüno에서 사용하는 MTCH6102는 허용 전압이 4V까지로 되어 있으며, 접속하면 고장의 원인이 됩니다.
(필자도 당초 그 사양을 눈치채지 못하고, IC를 사용할 수 없게 되어 버렸습니다)
이를 피하기 위해 M5Stack 시리즈와 연결할 때,
전원을 I2C가 아닌 3.3V 핀에서 잡아야합니다.
이 이미지처럼 nüno 기판에서 나오는 Grove 케이블
SDA를 GPL
21番
에 연결하고 SCL을 22番
에 연결하고VDD를
3.3V
에 연결하고 GND를 GND
에 연결하여 응답 할 수 있습니다.Grove 케이블의 케이블 색상은 제조업체마다 다르므로 주의하십시오.
M5Stack의 Grove 케이블의 사양에 대해서는 아래의 기사에서도 소개되고 있습니다.
프로그램
아래는 M5Stack의 LCD 디스플레이에 센서 값을 표시하는 샘플 프로그램입니다.
nüno를 Arduino에서 사용하려면 MTCH6102 용 라이브러리를 포함해야합니다.
MTCH6102의 라이브러리는 다음 파일에서 빌립니다.
#include <M5Stack.h>
#include "MTCH6102.h"
#define ADDR 0x25
#define ScreenWidth 320
#define ScreenHeight 240
MTCH6102 mtch = MTCH6102();
int len = 8;
void setup() {
// Initialize the M5Stack object
M5.begin();
//Wire.begin();
M5.Power.begin();
//Serial.begin(115200);
delay(100);
Serial.println();
Serial.println("start");
//Wire.begin();
mtch.begin();
mtch.writeRegister(MTCH6102_MODE, MTCH6102_MODE_STANDBY);
mtch.writeRegister(MTCH6102_NUMBEROFXCHANNELS, 0x08);
mtch.writeRegister(MTCH6102_NUMBEROFYCHANNELS, 0x03);//最低3点必要なため
mtch.writeRegister(MTCH6102_MODE, MTCH6102_MODE_FULL);
byte data;
// the operating mode (MODE)
data = mtch.readRegister(MTCH6102_MODE);
Serial.print("MODE: ");
Serial.println(data,BIN);
data = mtch.readRegister(MTCH6102_NUMBEROFXCHANNELS);
Serial.print("NUMBEROFXCHANNELS: ");
Serial.println(data);
data = mtch.readRegister(MTCH6102_NUMBEROFYCHANNELS);
Serial.print("NUMBEROFYCHANNELS: ");
Serial.println(data);
mtch.writeRegister(MTCH6102_CMD, 0x20);
delay(500);
}
void loop() {
M5.Lcd.setCursor(0, 70);
byte data;
float sensVals[10]={0,0,0,0,0,0,0,0,0,0};
//背景ライン
for(int i=0; i<len; i++){
M5.Lcd.drawLine((i+1)*35, ScreenHeight-40, (i+1)*35, 0, 0x0000cc);
}
for(int i=1; i<11; i++){
M5.Lcd.drawLine(0, i*20, ScreenWidth, i*20, 0x0000cc);
}
Serial.print("SENSORVALUE_RX <i>: ");
//for (byte i = MTCH6102_SENSORVALUE_RX0; i < MTCH6102_SENSORVALUE_RX0+10; i++) {
for (int i = 0; i < len; i++) {
data = mtch.readRegister(MTCH6102_SENSORVALUE_RX0+(i+2));
Serial.print(data);
Serial.print(", ");
sensVals[i] = data;
M5.Lcd.fillRect(30+(i*35), ScreenHeight-20, 30, 10, TFT_BLACK);
M5.Lcd.setCursor(30+(i*35), ScreenHeight-20);
M5.Lcd.print(data);
}
//グラフ線の描画
int leftMargin = 0;
for (int i = 0; i<len+1; i++){
float prev;
float current;
if(i==0){
prev = 0;
}if(i==len+1){
current = 0;
}else{
prev=sensVals[i-1];
current = sensVals[i];
}
M5.Lcd.drawLine(leftMargin+(i*35), 200-(prev/255)*200, leftMargin+((i+1)*35), 200-(current/255)*200, TFT_WHITE);
}
delay(50);
//グラフ線の消去
for (int i = 0; i<len+1; i++){
float prev;
float current;
if(i==0){
prev = 0;
}if(i==len+1){
current = 0;
}else{
prev=sensVals[i-1];
current = sensVals[i];
}
M5.Lcd.drawLine(leftMargin+(i*35), 200-(prev/255)*200, leftMargin+((i+1)*35), 200-(current/255)*200, TFT_BLACK);
}
Serial.println();
M5.Lcd.println();
M5.update();
}
이것으로 M5Stack의 동작이 완료됩니다!
Reference
이 문제에 관하여(nüno ver.2 TINY 키트를 M5Stack에서 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tendots/items/ca7542da7918966cf603
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <M5Stack.h>
#include "MTCH6102.h"
#define ADDR 0x25
#define ScreenWidth 320
#define ScreenHeight 240
MTCH6102 mtch = MTCH6102();
int len = 8;
void setup() {
// Initialize the M5Stack object
M5.begin();
//Wire.begin();
M5.Power.begin();
//Serial.begin(115200);
delay(100);
Serial.println();
Serial.println("start");
//Wire.begin();
mtch.begin();
mtch.writeRegister(MTCH6102_MODE, MTCH6102_MODE_STANDBY);
mtch.writeRegister(MTCH6102_NUMBEROFXCHANNELS, 0x08);
mtch.writeRegister(MTCH6102_NUMBEROFYCHANNELS, 0x03);//最低3点必要なため
mtch.writeRegister(MTCH6102_MODE, MTCH6102_MODE_FULL);
byte data;
// the operating mode (MODE)
data = mtch.readRegister(MTCH6102_MODE);
Serial.print("MODE: ");
Serial.println(data,BIN);
data = mtch.readRegister(MTCH6102_NUMBEROFXCHANNELS);
Serial.print("NUMBEROFXCHANNELS: ");
Serial.println(data);
data = mtch.readRegister(MTCH6102_NUMBEROFYCHANNELS);
Serial.print("NUMBEROFYCHANNELS: ");
Serial.println(data);
mtch.writeRegister(MTCH6102_CMD, 0x20);
delay(500);
}
void loop() {
M5.Lcd.setCursor(0, 70);
byte data;
float sensVals[10]={0,0,0,0,0,0,0,0,0,0};
//背景ライン
for(int i=0; i<len; i++){
M5.Lcd.drawLine((i+1)*35, ScreenHeight-40, (i+1)*35, 0, 0x0000cc);
}
for(int i=1; i<11; i++){
M5.Lcd.drawLine(0, i*20, ScreenWidth, i*20, 0x0000cc);
}
Serial.print("SENSORVALUE_RX <i>: ");
//for (byte i = MTCH6102_SENSORVALUE_RX0; i < MTCH6102_SENSORVALUE_RX0+10; i++) {
for (int i = 0; i < len; i++) {
data = mtch.readRegister(MTCH6102_SENSORVALUE_RX0+(i+2));
Serial.print(data);
Serial.print(", ");
sensVals[i] = data;
M5.Lcd.fillRect(30+(i*35), ScreenHeight-20, 30, 10, TFT_BLACK);
M5.Lcd.setCursor(30+(i*35), ScreenHeight-20);
M5.Lcd.print(data);
}
//グラフ線の描画
int leftMargin = 0;
for (int i = 0; i<len+1; i++){
float prev;
float current;
if(i==0){
prev = 0;
}if(i==len+1){
current = 0;
}else{
prev=sensVals[i-1];
current = sensVals[i];
}
M5.Lcd.drawLine(leftMargin+(i*35), 200-(prev/255)*200, leftMargin+((i+1)*35), 200-(current/255)*200, TFT_WHITE);
}
delay(50);
//グラフ線の消去
for (int i = 0; i<len+1; i++){
float prev;
float current;
if(i==0){
prev = 0;
}if(i==len+1){
current = 0;
}else{
prev=sensVals[i-1];
current = sensVals[i];
}
M5.Lcd.drawLine(leftMargin+(i*35), 200-(prev/255)*200, leftMargin+((i+1)*35), 200-(current/255)*200, TFT_BLACK);
}
Serial.println();
M5.Lcd.println();
M5.update();
}
Reference
이 문제에 관하여(nüno ver.2 TINY 키트를 M5Stack에서 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tendots/items/ca7542da7918966cf603텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)