###### tags: `聯鴻`
# 工作筆記
---
## Mega_HMI_16i8o
mega 2560
ATmega2560
USB-接6pin (R S M M G U)
燒錄器 Arduino as ISP
先燒錄bootloader
燒錄成功後 換USB to microusb
燒錄器 ArduinoISP
可以上傳 code
---
## LAN

### 修改本機乙太網路IP地址
1. 進乙太網路 內容
2. 選擇TCP/IPv4
3. 按內容
4. 更改IP位置與遮罩

1. 點選透過網路搜索
2. 選擇底下出現的設備
3. 在**本模組IP位置中**修改IP位置
4. 設置選中項參數
---
## WiFi

### 預設網址IP: **192.168.4.1**
1. 可修改SSID Name
2. 修改SoftAP IP **(可替換掉預設IP)**
3. 按SAVE後,***重新插拔連接線***
---
## 藍芽

1. 點選選項
2. 設置選擇串口
3. 串列傳輸速

在底下Termal 輸入`<SETBLE>`
按***發送資料***
會出現
`Please input BT_NAME (LHXXXXX) =>`
之後在Termal輸入想要的藍芽名稱; 例(**LH00002**)
發送資料後,可利用手機藍芽測試有無修改成功
---
## RFID讀取 to EXCEL檔案
```cpp=
#include <SPI.h>
#include <MFRC522.h> // 引用程式庫
#define BUZZ 48 // 蜂鳴器
#define RST_PIN 42 // 讀卡機的重置腳位
#define SS_PIN 53 // 晶片選擇腳位
String Str_Str;
char str1[25];
MFRC522 mfrc522(SS_PIN, RST_PIN); // 建立MFRC522物件
typedef struct ID_NAME_PAIR
{
String ID ;
String NAME ;
};
#define ID_NAME_PAIR_NUM 100
ID_NAME_PAIR id_name_pair_list[ID_NAME_PAIR_NUM] ;
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init(); // 初始化MFRC522讀卡機模組
Serial.println("RFID reader is ready!");
Serial.println("LABEL,Date,Time,Name");
pinMode(BUZZ, OUTPUT);
//digitalWrite(BUZZ, HIGH);
//delay(500);
//digitalWrite(BUZZ, LOW);
//增加卡片的ID、NAME
id_name_pair_list[0].ID = "828FBE1F";
id_name_pair_list[0].NAME = "James";
id_name_pair_list[1].ID = "99075A29";
id_name_pair_list[1].NAME = "Marry";
}
void loop() {
// 確認是否有新卡片
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
byte *id = mfrc522.uid.uidByte; // 取得卡片的UID
byte idSize = mfrc522.uid.size; // 取得UID的長度
Str_Str="";
for (byte i = 0; i < idSize; i++)
{ // 逐一顯示UID碼
Serial.print("id[");
Serial.print(i);
Serial.print("]: ");
Serial.print(" ");
Serial.print(id[i], HEX); // 以16進位顯示UID值
Serial.println();
sprintf(str1, "%02X",id[i]);
Str_Str=Str_Str + String(str1);
}pf( Str_Str.c_str());
mfrc522.PICC_HaltA(); // 讓卡片進入停止模式
Serial.print("DATA,DATE");
Serial.print(",");
Serial.print("TIME");
Serial.print(",");
Serial.println(searchNameByID(Str_Str));
// BUZZ 響 0.1 秒
digitalWrite(BUZZ, HIGH);
delay(100);
digitalWrite(BUZZ, LOW);
}
delay(100);
}
bool compare(String id1, String id2) {
if (id1 != id2) return false ;
else return true ;
}
String searchNameByID(String id_source) {
for ( int i = 0 ; i < ID_NAME_PAIR_NUM ; i++ ) {
if ( compare( id_source, id_name_pair_list[i].ID ) )
return id_name_pair_list[i].NAME ;
}
String none = "0" ;
return none ;
}
// 簡便的工具函式,格式化輸出字串
void pf(const char *fmt, ... ){
char tmp[80]; // resulting string limited to 128 chars
va_list args;
va_start (args, fmt );
vsnprintf(tmp, 80, fmt, args);
va_end (args);
// Serial.println(tmp);
Serial.println(tmp);
Serial1.println(tmp);
Serial2.println(tmp);
Serial3.println(tmp);
}
```
---