7956| 5
|
[讨论] 无意中挖到一份以前自己写的代码,拿出来给大家猜 |
无意中挖到一份以前自己写的代码,拿出来给大家猜。秀硬件功能求代码的帖子网上多了,现在倒过来玩,看看大家口味如何。 这是一份Arduino IDE环境下写的程序,配有硬件实现其功能。代码后有注解,作为大家推理的线索。注解需要中文知识进行分析。 int Human_Sensor1 = 52; //凡闺房事,人所为也。 int Human_Sensor2 = 53; int Ultra_Sonic[23]; //廿四耳目藏身下 int Ultra_Sonic_Trigger = 22; float US_Distance[23]; //静待塌上春意闹。 float US_Previous_Distance[23]; float US_Former_Distance[23]; int Sound_Sensor = 49; //巫山云雨比翼时,承欢男女东窗刻。 int X_Vibration = 50; //卿卿我我,摇摇晃晃歪歪。 int Y_Vibration = 51; int Execute = 48; //棒打鸳鸯 int Alert = 12; //当头棒喝 long Period = 60000; //是贞是奸,尘埃落定终有时。 int Time_Stopper = 0; //凭谁记,司辰者。 int XY_Stopper = 0; //或牡丹花下,或龙虎相济。 int Sound_Stopper = 0; //亦莺声浪语。 float Z_Initial = 20; //塌上起伏多寡,盖以此计。 int Executed = 0; //一失足成千古恨,再回首已是百年身。 unsigned long Sampling_Period; //春宵一刻值千金,春宵三十分之一刻值三十三金。 unsigned long XY_Start; unsigned long XY_Timer; unsigned long XY_Ratio; unsigned long Sound_Start; unsigned long Sound_Timer; String Message = ""; //运筹帷幄千里之外 int i; long Manual_Delay = 0; //听回音,毋忘计时。 void setup() { Serial.begin(9600); for (i = 0; i < 24; i = i + 1) { Ultra_Sonic = i + 23; } for (i = 0; i < 24; i = i + 1) { pinMode(Ultra_Sonic, INPUT); } pinMode(Sound_Sensor, INPUT); pinMode(X_Vibration, INPUT); pinMode(Y_Vibration, INPUT); pinMode(Human_Sensor1, INPUT); pinMode(Human_Sensor2, INPUT); pinMode(Ultra_Sonic_Trigger, OUTPUT); pinMode(Execute, OUTPUT); } void loop() { if (digitalRead(Human_Sensor1) || digitalRead(Human_Sensor2) != 0) { //举头三寸无神明,乃机关也。人影莆动,视为号也。 if (Time_Stopper == 0) { //观察期届,一元复始。 Sampling_Period = millis(); Time_Stopper = 1; } if (millis() - Sampling_Period <= Period) { //断一期内之贞奸 Communication(); //通风报信 if (digitalRead(X_Vibration) || digitalRead(Y_Vibration)) { //牵一发动全身 if (XY_Stopper == 0) { //甫动,计时。 XY_Start = millis(); XY_Stopper = 1; } } else { //入静,结算之。 XY_Timer = XY_Timer + (millis() - XY_Start); XY_Stopper = 0; } if (millis() - Sampling_Period >= 0.5 * Period) { //情到浓时满室春,声震屋瓦却陷囵。 if (digitalRead(Sound_Sensor)) { //大呼,计时。 if (Sound_Stopper == 0) { Sound_Start = millis(); Sound_Stopper = 1; } } else { //入静,结算之。 Sound_Timer = Sound_Timer + (millis() - Sound_Start); Sound_Stopper = 0; } if (Sound_Timer >= 0.2 * Period) { //向使当初声未始,一生贞猥复谁知。 Executed = 1; //一失声成千古恨,再回首已是百年身。 Execution(); } } } else { if (XY_Timer >= 0.5 * Period) { //无风起浪,非奸即盗。 Executed = 1; //一失足成千古恨,再回首已是百年身。 Execution(); } Communication(); //通风报信 XY_Timer = 0; //一期一判 Time_Stopper = 0; Sound_Timer = 0; Sound_Stopper = 0; } Ultra_Sonic_Sensor(); //龙翻龟腾兔吮毫,百般动静皆为过。 } } void Ultra_Sonic_Sensor() { pinMode(Ultra_Sonic_Trigger, LOW); Manual_Delay = 0; //休言光阴待人事,怠慢尔等监视工。 Manual_Delay = 0; pinMode(Ultra_Sonic_Trigger, HIGH); Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; Manual_Delay = 0; pinMode(Ultra_Sonic_Trigger, LOW); for (i = 0; i < 24; i = i + 1){ US_Distance = Z_Initial - pulseIn(Ultra_Sonic, HIGH) /58.00; //二十四桥明月夜,玉人何处教吹箫。 } } void Communication() { for (i = 0; i < 24; i = i + 1) { Message = Message + String(US_Distance) + String('|'); } XY_Ratio = XY_Timer / Period; Message = Message + String(XY_Ratio); Serial.println(Message); Message = ""; } void Execution() { if (millis() %1000 < 500) { //亮灭 pinMode(Execute, HIGH); } else { pinMode(Execute, LOW); } } P.S. 蘑菇云会员众欢迎猜测,猜中后本人亲手制作个吨位级的奖品。以上。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed