flash-led
ThomasGja
·
·
个人记录
flash.ino
//Created by ThomasGja 20231228
unsigned long long hertz = 50, change, ct, temp;
char ch;
bool p, d=false;
#define LED 11
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED, OUTPUT);
Serial.println(F("s"));
}
void wait(unsigned long long us){
delay(us/1000);
delayMicroseconds(us%1000);
}
unsigned long long rint(){
unsigned long long tem = 0;
while(Serial.available()){
ch = Serial.read();
if(ch>='0'&&ch<='9') tem= tem*10+ch-'0';
else break;
}
return tem;
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()){
p=1;
ch = Serial.read();
if(ch == '+') temp = hertz +1;
else if(ch == '-') temp = hertz -1;
else if(ch == ':'){
temp = rint();
ch = Serial.read();//.
}else if(ch=='d') d = true;
else if(ch=='a') d = false;
else p=0;
if(p){
if(!d){
if(temp>0) hertz = temp;
Serial.println(int(hertz));
}else{ Serial.println(F("No Flashing")); digitalWrite(LED, 1); }
}else{ Serial.println(F("[Wrong]")); }
}
if(!d){
if(hertz!=0){
ct = 1000000/2/hertz;
digitalWrite(LED, 1);
wait(ct);
digitalWrite(LED, 0);
wait(ct);
}else{
Serial.println(F("hertz == 0!"));
delay(1000);
}
}
}
ctrl.py
# ctrl.py
# Created by ThomasGja 20231228
import serial, getch, sys
from time import sleep
print("Connecting...")
ser = serial.Serial('/dev/cu.usbmodem11101', 9600, timeout=8)#change yourself
ser.read_all()
Mode = 1 # 1:+- ; 2:frequency input
print("LET'S START!")
def OUTPUTser():
print(ser.read_all().decode(), end='')
while True:
if Mode == 1:
print(":",end='')
sys.stdout.flush()
ch = getch.getche()
if ch in ['+','=']:
ser.write(b'+')
sleep(0.02)
OUTPUTser()
elif ch in '-ad':
ser.write(ch.encode('utf-8'))
sleep(0.02)
OUTPUTser()
elif ch == 'm':
Mode = 2
print('Mode:',Mode)
elif Mode == 2:
try:
freq = int(input(":"))
if freq == 0:
Mode = 1
print('Mode:',Mode)
ser.write( str(':'+str(freq)+'.').encode('utf-8') )
sleep(0.05)
OUTPUTser()
except:
print("Input Error!")
sleep(0.05)