国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

全工位氫氧根離子監測站

迪文智能屏 ? 2024-03-29 08:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

——來自迪文開發者論壇

本期為大家推送迪文開發者論壇獲獎開源案例——全工位氫氧根離子監測站工程師采用7英寸串口屏,通過RS485RS232接口與外設通訊,實現水中氫氧根離子含量檢測。可應用于電廠污水、紡織污水、池塘污水檢測等場景,降低人工采集成本,測試精準度高。


UI素材展示

00973eae-ed61-11ee-9118-92fbcf53809c.png

00ab18de-ed61-11ee-9118-92fbcf53809c.png

UI開發示例

00b697a4-ed61-11ee-9118-92fbcf53809c.png

C51代碼設計 機械臂核心操作代碼:

#ifndef __BASE_H__#define __BASE_H__#include "sys.h"
#define BASE_SHAKE_CNT_DEF 12#define BASE_CLEAN_TIME_DEF 3
u8 base_shake(u16 cnt,u16 quit_code);u8 base_clean(u16 clean_time, u16 quit_code);u8 base_air_dry(u16 quit_code);u8 base_select_sample(u8 pos,u8 is_clean,u16 quit_code);
#include "base.h"#include "motor.h"#include "test.h"#include "params.h"
u8 base_shake_x_or_y(u8 is_x,u16 cnt,u16 quit_code){ #define SHAKE_STEP 300 #define SHAKE_DELAY 400 s16 cur_step = 0;u8res=0; if(cur_motor_pos==MOTOR_POS_CLEAN) return0; while(cnt--) { if(cur_step==0) cur_step = SHAKE_STEP; else if(cur_step>0) cur_step = SHAKE_STEP*-2; else cur_step = SHAKE_STEP*2; if(is_x) { motor_set_dir((cur_step<0?MOTOR_DIR_FORWARD:MOTOR_DIR_BACKWARD),MOTOR_DIR_SKIP,MOTOR_DIR_SKIP);? ?? ?? ?? ?? ?? ?? ?? ?motor_move((cur_step<0?-cur_step:cur_step),0,0);? ?? ?? ?? ?? ? }else? ?? ?? ?? ?? ? {? ?? ?? ?? ?? ?? ?? ?? ?motor_set_dir(MOTOR_DIR_SKIP,(cur_step<0?MOTOR_DIR_FORWARD:MOTOR_DIR_BACKWARD),MOTOR_DIR_SKIP);? ?? ?? ?? ?? ?? ?? ?? ?motor_move(0,(cur_step<0?-cur_step:cur_step),0);? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? }? ?? ?? ?? ?? ? sys_delay_ms(SHAKE_DELAY);? ?? ?? ?? ?? ? if(func_code_scan()==quit_code)? ?? ?? ?? ?? ? {? ?? ?? ?? ?? ?? ?? ?? ?res = 1;? ?? ?? ?? ?? ?? ?? ?? ?break;? ?? ?? ?? ?? ? }? ?? ?? ????????}???? ? ?? ?? if(cur_step!=0)? ?? ???{? ?? ?? ?? ?? ? if(is_x)? ?? ?? ?? ?? ? {? ?? ?? ?? ?? ?? ?? ?? ?motor_set_dir((cur_step<0?MOTOR_DIR_BACKWARD:MOTOR_DIR_FORWARD),MOTOR_DIR_SKIP,MOTOR_DIR_SKIP);? ?? ?? ?? ?? ?? ?? ?? ?motor_move(SHAKE_STEP,0,0);? ?? ?? ?? ?? ? }else? ?? ?? ?? ?? ? {? ?? ?? ?? ?? ?? ?? ?? ?motor_set_dir(MOTOR_DIR_SKIP,(cur_step<0?MOTOR_DIR_BACKWARD:MOTOR_DIR_FORWARD),MOTOR_DIR_SKIP);? ?? ?? ?? ?? ?? ?? ?? ?motor_move(0,SHAKE_STEP,0);? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? }? ?? ?? ?? ?? ? sys_delay_ms(SHAKE_DELAY);????????}? ?? ?? return res;}
u8 base_shake(u16 cnt,u16 quit_code){ if(base_shake_x_or_y(1,cnt,quit_code)) return 1; if(base_shake_x_or_y(0,cnt,quit_code)) return2; return 0;}
u8 base_clean(u16 clean_time, u16 quit_code){ #define FULL_TIME (sys_params.full_time) #define EMPTY_TIME (FULL_TIME+25) #define BASE_UNIT 200 u8 res = 0;u8time;motor_select_sample(MOTOR_POS_CLEAN); WASTE_PUMP_OFF(); WATER_PUMP_ON(); time = FULL_TIME; while(time--) { sys_delay_ms(BASE_UNIT); if(func_code_scan()==quit_code) { res = 1; break; }} if(clean_time) { WASTE_PUMP_ON(); while(clean_time--) { sys_delay_ms(1000); if(func_code_scan()==quit_code) { res = 1; break; } } } WASTE_PUMP_ON(); WATER_PUMP_OFF(); time = EMPTY_TIME; while(time--) { sys_delay_ms(BASE_UNIT); if(func_code_scan()==quit_code) res = 3; } WASTE_PUMP_OFF(); if(res==0) { test_update_sta(WORK_STA_AIR_DRY); res = base_air_dry(quit_code); } return res;}
u8 base_air_dry(u16 quit_code){ #define AIR_DRY_TIME (sys_params.air_dry_time) u8 res = 0;u8sec; AIR_PUMP_ON(); sec = AIR_DRY_TIME; while(sec--) { sys_delay_ms(1000); if(func_code_scan()==quit_code) { res = 1; break; } } AIR_PUMP_OFF(); return res;}
u8 base_select_sample(u8 pos,u8 is_clean,u16 quit_code){ if(is_clean) { test_update_sta(WORK_STA_CLEAN); if(is_testing) { work_sta = WORK_STA_TEST_STEP_1; if(test_upload_data()) return 1; } if(base_clean(BASE_CLEAN_TIME_DEF, quit_code)) return 1; } if(is_testing) { work_sta = WORK_STA_TEST_STEP_2; if(test_upload_data()) return 1;} test_update_sta(WORK_STA_MOVE); motor_select_sample(pos); if(func_code_scan()==quit_code) return2; test_update_sta(WORK_STA_SHAKE); if(base_shake(BASE_SHAKE_CNT_DEF,quit_code)) return 3; if(func_code_scan()==quit_code) return4; return 0;}

測試相關的代碼:

bitis_complete_tip=0;u16 complete_tip_time = 0;u8 cur_bottle_no = 0;u8 cur_completed_num = 0;u8 total_sample_num = NUM_OF_GROUP_DEF;u8 cur_work_sta = WORK_STA_IDLE;u8 last_result[LAST_RESULT_MAX_LEN] = {"--------\0\0"};u8 is_testing = 0;u8is_normal_completed=0;u8test_make(u16quit_code);
//開始測試void test_start(u16 quit_code){u16val; is_testing = 1; is_complete_tip = 0; cur_work_sta = WORK_STA_CLEAN; cur_completed_num = 0; cur_bottle_no = start_bottle_no; score = SCORE_UNKNOW; val = 1; sys_write_vp(MAIN_WIN_START_BTN_VP,(u8*)&val,1); main_win_update(); is_normal_completed = !test_make(quit_code); if(is_normal_completed) { test_update_sta(WORK_STA_CLEAN); base_clean(BASE_CLEAN_TIME_DEF, quit_code); } motor_select_sample(MOTOR_POS_PROTECT); cur_work_sta = (is_normal_completed?WORK_STA_ALL_COMPLETED:WORK_STA_IDLE); cur_bottle_no = 0; val = 0; sys_write_vp(MAIN_WIN_START_BTN_VP,(u8*)&val,1); main_win_update(); if(is_normal_completed) { is_complete_tip = 1; complete_tip_time = COMPLETE_TIP_MAX_TIME; sys_goto_win(WIN_ID_MAIN); sys_delay_ms(100); sys_click_pos(2,13); } is_testing = 0; is_stable = 0; check_stable_tick = 0; val = 0; sys_write_vp(BTN_VAL_ADDR,(u8*)&val,1); work_sta = WORK_STA_TEST_STEP_COMPLETED; test_upload_data();}
//測試流程u8 test_make(u16 quit_code){ u8 pos; u8 offset; float sum = 0; float max = -999999; float min = 999999; u8 index = 0; u8 end_pos; end_pos = total_sample_num+start_bottle_no-1; for(pos=(start_bottle_no-1);pos{ if(base_select_sample(pos,!(is_group&&(index%num_of_group)),quit_code))return1; cur_work_sta = WORK_STA_ANALYSIS; main_win_update(); if(is_testing) { work_sta = WORK_STA_TEST_STEP_3; if(test_upload_data()) return 1; } check_stable_tick = 1; is_stable = 0; stable_val = 999999; while(1) { if(is_stable) break; if(func_code_scan()==quit_code) return 2;} score = SCORE_UNKNOW; memset(last_result,0,LAST_RESULT_MAX_LEN); sprintf(last_result,"%.3f",cur_ph); if(is_group&&(invalid_num_of_group { offset = index%num_of_group; if(offset>=invalid_num_of_group) { sum += cur_val;//對有效點累加求和 if(cur_val>max) max = cur_val; if(cur_val min = cur_val; } if((offset+1)==num_of_group) { sum /= (num_of_group-invalid_num_of_group); score = ((max-min) sum = 0; max = -999999; min = 999999; } } cur_completed_num++; if(is_testing) { work_sta = WORK_STA_TEST_STEP_4; if(test_upload_data()) return 1; } cur_bottle_no++; if(cur_bottle_no>end_pos) cur_bottle_no = 0; main_win_update(); index++;} return 0;}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 檢測
    +關注

    關注

    5

    文章

    4861

    瀏覽量

    94152
  • 監測
    +關注

    關注

    2

    文章

    4359

    瀏覽量

    47281
  • 迪文屏
    +關注

    關注

    3

    文章

    88

    瀏覽量

    6032
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    從單一到綜合:多功能自動氣象監測站

    監測站
    pingao141378
    發布于 :2025年12月18日 10:44:14

    光伏總輻射監測站:開啟綠色能源“智慧眼”?

    光伏總輻射監測站:開啟綠色能源“智慧眼”?柏峰【BF-GFQX】一、探秘光伏總輻射監測站? 在全球積極踐行綠色發展理念、大力推進清潔能源轉型的時代浪潮中,光伏發電憑借其清潔、可再生、取之不盡用之不竭等顯著優勢,
    的頭像 發表于 11-03 09:30 ?2899次閱讀
    光伏總輻射<b class='flag-5'>監測站</b>:開啟綠色能源“智慧眼”?

    GNSS位移監測站:地質安全的“毫米級哨兵”

    GNSS位移監測站:地質安全的“毫米級哨兵”柏峰【BF-GNSS】在地質災害預警、大型工程安全監測、地殼形變研究等領域,GNSS位移監測站憑借全天候、高精度、自動化的特性,實現對地表及結構體微小位移的實時捕捉,
    的頭像 發表于 10-23 15:48 ?410次閱讀
    GNSS位移<b class='flag-5'>監測站</b>:地質安全的“毫米級哨兵”

    分布式光伏環境監測站的技術架構與應用實踐

    分布式光伏環境監測站的技術架構與應用實踐 柏峰【BF-GFQX】一、系統技術架構解析 分布式光伏環境監測站采用“感知層-傳輸層-應用層”三層架構設計,實現環境數據的鏈路智能化處理。
    的頭像 發表于 10-13 10:05 ?582次閱讀
    分布式光伏環境<b class='flag-5'>監測站</b>的技術架構與應用實踐

    太陽輻射綜合監測站:解碼陽光

    太陽輻射綜合監測站:解碼陽光 柏峰【BF-GFQX】在新能源開發與氣候變化研究領域,太陽輻射綜合監測站是解碼陽光的“能量觀測站”。它以高精度、多維度的監測能力,捕捉太陽輻射的細微變化,
    的頭像 發表于 09-24 11:30 ?583次閱讀
    太陽輻射綜合<b class='flag-5'>監測站</b>:解碼陽光

    降雨量監測站:氣象水文監測的“基礎感知單元”

    降雨量監測站:氣象水文監測的“基礎感知單元”柏峰【BF-YL】在氣象觀測與水文監測網絡中,降雨量監測站是獲取基礎雨量數據的“核心感知單元”。它通過專業傳感設備實時采集降雨量
    的頭像 發表于 09-23 10:26 ?536次閱讀
    降雨量<b class='flag-5'>監測站</b>:氣象水文<b class='flag-5'>監測</b>的“基礎感知單元”

    雷達水文監測站:智慧水文監測的技術革新與應用實踐

    雷達水文監測站:智慧水文監測的技術革新與應用實踐 柏峰【BF-LDSW】在全球氣候變化與極端水文事件頻發的背景下,傳統水文監測手段面臨著監測范圍有限、實時性不足、惡劣環境適應性差等諸多
    的頭像 發表于 09-16 10:13 ?735次閱讀
    雷達水文<b class='flag-5'>監測站</b>:智慧水文<b class='flag-5'>監測</b>的技術革新與應用實踐

    陣列式雷達流量監測站-案例分享

    陣列式雷達流量監測站是一種利用陣列雷達技術進行非接觸式流量監測的設備,廣泛應用于水文監測、城市排水、智慧水務、環境監測等領域。它通過發射和接收電磁波,測量河流、渠道、管道、明渠等場景中
    的頭像 發表于 09-11 16:31 ?1352次閱讀
    陣列式雷達流量<b class='flag-5'>監測站</b>-案例分享

    北斗生態環境監測站:讀懂自然的 “語言”

    北斗生態環境監測站:讀懂自然的 “語言”柏峰【BF-BDQX】當生態監測遇上北斗技術,一場關于 “精準守護自然” 的變革正悄然發生 ——北斗生態環境監測站以北斗定位導航系統為核心
    的頭像 發表于 09-04 10:59 ?508次閱讀
    北斗生態環境<b class='flag-5'>監測站</b>:讀懂自然的 “語言”

    鐵路氣象監測站:鐵軌旁的 “安全哨兵”

    鐵路氣象監測站:鐵軌旁的 “安全哨兵” 柏峰【BF-QX】鐵路運輸對氣象條件格外敏感 —— 強風可能吹偏列車、暴雨易引發線路滑坡、冬季覆冰會導致接觸網斷電,每一種突發天氣都可能威脅行車安全。
    的頭像 發表于 08-27 14:57 ?679次閱讀
    鐵路氣象<b class='flag-5'>監測站</b>:鐵軌旁的 “安全哨兵”

    大氣負氧離子監測站技術方案

    大氣負氧離子監測站技術方案 柏峰【BF-FLZ】大氣負氧離子監測站旨在實現對環境中負氧離子濃度的精準、實時、長期
    的頭像 發表于 08-19 09:32 ?832次閱讀
    大氣負氧<b class='flag-5'>離子</b><b class='flag-5'>監測站</b>技術方案

    扼流圈 GNSS 位移監測站如何守護工程安全?

    扼流圈 GNSS 位移監測站如何守護工程安全?柏峰【BF-GNSS】在地質災害預警、大型工程監測領域,毫米級的位移變化可能隱藏著巨大風險。傳統的人工巡檢不僅效率低下,更難以捕捉細微的形變信號。
    的頭像 發表于 08-08 15:25 ?769次閱讀
    扼流圈 GNSS 位移<b class='flag-5'>監測站</b>如何守護工程安全?

    GNSS位移監測站邊坡位移地質災害監測預警方案

    GNSS位移監測站邊坡位移地質災害監測預警方案 柏峰 【BF-GNSS】關于地質災害監測預警系統,有以下幾個重要的方面來分析:
    的頭像 發表于 07-31 09:11 ?745次閱讀
    GNSS位移<b class='flag-5'>監測站</b>邊坡位移地質災害<b class='flag-5'>監測</b>預警方案

    自動雨量監測站:捕捉雨情的 “智慧眼睛”

    自動雨量監測站:捕捉雨情的 “智慧眼睛” 柏峰【BF-YL】在氣象萬千的大自然中,降雨作為一種常見卻又對人類生活、生產有著重大影響的天氣現象,其監測數據的精準獲取至關重要。
    的頭像 發表于 07-18 16:34 ?548次閱讀
    自動雨量<b class='flag-5'>監測站</b>:捕捉雨情的 “智慧眼睛”

    雨量監測站

    監測站
    斯塔克物聯科技
    發布于 :2025年07月09日 10:20:17