久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3397|回復: 6
打印 上一主題 下一主題
收起左側

51單片機帶坐姿糾正智能臺燈,求大神指導設計思路

[復制鏈接]
跳轉到指定樓層
樓主
ID:479932 發表于 2019-3-25 14:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
300黑幣
想制作這個給家里的小朋友用,原理圖,要有坐姿糾正,無人則自動關燈,一定時間后提醒一次注意休息,自動調光,手動調光,定時關閉,求思路

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:283012 發表于 2019-5-11 11:36 | 只看該作者
我剛做了一個,坐姿矯正,自動開關燈,一定時間提示,自動手動調光,正好跟我做的一樣,你這300黑幣我能獲取嗎?
回復

使用道具 舉報

板凳
ID:464127 發表于 2019-6-10 14:52 來自手機 | 只看該作者
handily 發表于 2019-5-11 11:36
我剛做了一個,坐姿矯正,自動開關燈,一定時間提示,自動手動調光,正好跟我做的一樣,你這300黑幣我能獲 ...

我也想要可以給我看看嗎
回復

使用道具 舉報

地板
ID:283012 發表于 2020-1-22 09:57 | 只看該作者
愛你知道不起 發表于 2019-6-10 14:52
我也想要可以給我看看嗎

好久沒上這個網站了,怎么分享給你?/
回復

使用道具 舉報

5#
ID:283012 發表于 2020-1-22 09:59 | 只看該作者
愛你知道不起 發表于 2019-6-10 14:52
我也想要可以給我看看嗎

void ALLINIT()
{
        SystemInit();                                       
        SysTick_Init(72);//72MSysTick_Init(72);//72M
        USART1_Init(115200);
        usart3_init(9600);  //′®¿ú33õê¼»ˉÎa9600
        KEY_Init();
        SR501_Init();
        LED_Init();
        TIM1_PWM_Init(); //TIM1 PWM??????,???TIM1 PWM??
        ADC1_Init();
        if(Display_Init()) Select_cpt=1;
        DS1302_config();
        ds1302_init();//DS13023õê¼»ˉ
        ds1302_read_time();
        ds1302_write_time(); //D′èë3õê¼Öμ
        while(DHT11_Init())
        {
                u3_printf("DHT11 Error ! \r\n");
                delay_ms(1000);
        }
        TIM2_NVIC_Configuration(); // TIM2 ¶¨ê±ÅäÖÃ
        TIM2_Configuration();        
        Ultrasonic_Config();//3¬éù2¨¶Ë¿ú3õê¼»ˉ
//        Color_Test();
    TIM4_Init(10000-1,7199);                    
}  
#include "public.h"
#include "Init.h"
u8 humi_num1;
volatile u32 time; // ms ¼Æê±±äá¿
int main()
{       
        ALLINIT();       
        u3_printf("System init OK!\r\n");
        di_di();
        while(1)
        {
//        u3_printf("%d \r\n",time_0);       
        Mode_Selection();       
//                        if(SR501_data==1)GPIO_SetBits(GPIOC, GPIO_Pin_13 );       
        }
}
#include "Display.h"
#include "public.h"

u8 Select_cpt=0,mode=0,Second=0,First=0;
u16 ADvalue_PA6=0,ADvalue_PA5=0,ADvalue_PA7=0,ADvalue_temp=0;
u8 temp_MCU=0,AD_PA5=0,AD_PA5_Per=0;
extern __IO u16 ADC_ConvertedValue[4];       
Site ASite={6,30};
Site SSite={6,30};
       
void (*p)(void);
void *Mode_Main(void);
void *Mode_First(void);
void *Mode_Second(void);
void *Mode_Third(void);
void *Mode_Fourth(void);
void *Mode_Fifth(void);






u8 Display_Init(void)
{
        Lcd_Init();
//        Color_Test();
        Lcd_Clear(BLACK);
        p=&Mode_Main;
        p();
       
        return 1;
}



static u8 lightmove(Site *site)
{
        u8 mode,Dis_set=10;
        u16 ymax,ymin;
        u8 dang1=0,pwm1=0;
       
        while(Select_cpt==1)
        {
                if(p==Mode_Main) //éèÖüyí·éÏÏÂÏT
                {
                        ymin=30;
                        ymax=75;
                }
//                else if(p==Mode_Second)
//                {
//                        ymin=0;
//                        ymax=90;
//                }
       
                if(p==Mode_Main)//Ö÷Æá2ù×÷
                {
                        DS1302_TX();//ê±¼ä èÕÆú    DATDèòaéÏà-μç×è
                        DHT11_TX();
                        Ultrasonic_TX();
                        LCD_ShowxNum(66,90,&time_2,4);       
                        Gui_DrawFont_GBK16(99,90,YELLOW,BLACK,"s");                               
                        if(KEY_U==0)
                        {
                                delay_ms(10);
                                if(KEY_U==0)
                                {
                                while(KEY_U==0);
                                site->y-=15;
                                Lcd_Clear_c16(BLACK,site->x,site->y+15,2);
                                if(site->y<ymin) site->y=ymax;
                                Gui_DrawFont_GBK16(site->x,site->y,YELLOW,BLACK,"->");               
                                }
                        }
                        if(KEY_D==0)
                        {
                                delay_ms(10);
                                if(KEY_D==0)
                                {
                                        while(KEY_D==0);
                                        site->y+=15;
                                        Lcd_Clear_c16(BLACK,site->x,site->y-15,2);
                                        if(site->y>ymax) site->y=ymin;
                                        Gui_DrawFont_GBK16(site->x,site->y,YELLOW,BLACK,"->");       
                                }
                        }                       
                        if(KEY_R==0)
                          {                       
                                        switch(site->y)
                                        {
                                                case 30:mode=0;
                                                        break;
                                                case 45:mode=1;
                                                        break;
                                                case 60:mode=2;
                                                        break;
                                                case 75:mode=3;
                                                        break;
                                                case 90:mode=4;
                                                        break;                               
                                                default:
                                                        break;
                                        }
                                        return mode;
                                }
                                else if(KEY_L==0)
                                {
                                        Lcd_Clear(BLACK);
                                        p=&Mode_Main;
                                        ASite.y=30;
                                        p();
                                        break;
                                }
                }
                else if(p==Mode_First)//ò»¼¶Æá2ù×÷
                {
                        First=1;
                        while(First==1)
                        {                                       
                                if(KEY_U==0)
                                {       
                                        while(KEY_U==0);
                                        dang1+=1;
                                }
                                if(KEY_D==0)
                                {
                                        while(KEY_D==0);
                                        dang1-=1;
                                }
                                if(dang1>6)  dang1=0;
                                if(dang1<0)  dang1=6;                               
                                Gui_DrawFont_Num32(40,20,YELLOW,BLACK,dang1) ;
                                switch(dang1)
                                        {
                                                case 0:TIM1->CCR1 = 10*(100-100);                               
                                                        break;
                                                case 1:TIM1->CCR1 = 10*(100-90);                               
                                                        break;
                                                case 2:TIM1->CCR1 = 10*(100-80);                       
                                                        break;
                                                case 3:TIM1->CCR1 = 10*(100-60);               
                                                        break;
                                                case 4:TIM1->CCR1 = 10*(100-40);       
                                                        break;
                                                case 5:TIM1->CCR1 = 10*(100-20);               
                                                        break;
                                                case 6:TIM1->CCR1 = 10*(100-0);
                                                        break;
                                        }       
       
                                       
                                if(KEY_L==0)
                                {
                                        First=0;
                                        Lcd_Clear(BLACK);
                                        p=&Mode_Main;
                                        ASite.y=30;
                                        p();
                                }
                        }
                }
                else if(p==Mode_Second)//¶t¼¶Æá2ù×÷
                {
                        First=1;time_0=0;
                        while(First==1)
                        {
                                /******1¤×÷걼䣬¾Ã×øìáDÑ********/                       
                                if(KEY_U==0)time_1+=5;                               
                                if(KEY_D==0)time_1-=1;                                                       
                                Gui_DrawFont_GBK16(5,95,YELLOW,BLACK,"Time_Set:");
                                Gui_DrawFont_GBK16(112,95,YELLOW,BLACK,"s");
                                LCD_ShowxNum(79,95,&time_1,4);
                                Gui_DrawFont_GBK16(5,110,YELLOW,BLACK,"Time_Now:");
                                Gui_DrawFont_GBK16(112,110,YELLOW,BLACK,"s");
                                LCD_ShowxNum(79,110,&time_0,4);
                                if(time_0>time_1)
                                {
//                                GPIO_SetBits(GPIOC, GPIO_Pin_13 );       
//                                        Lcd_Clear(BLACK);
                                }
                                ADvalue_PA5=Get_ADC_Average(0,20);
                                AD_PA5=ADvalue_PA5*256/65536;
                                AD_PA5_Per=100-AD_PA5*6.7;if(AD_PA5_Per>93) AD_PA5_Per=93;
                                Gui_DrawFont_GBK16(5,5,YELLOW,BLACK,"Gui Yi Light:");
                                Gui_DrawFont_GBK16(20,20,YELLOW,BLACK,"G_Y:");
                                LCD_ShowxNum(55,20,&AD_PA5,2);
                                Gui_DrawFont_GBK16(20,35,YELLOW,BLACK,"B_F:");
                                LCD_ShowxNum(55,35,&AD_PA5_Per,2);
                                Gui_DrawFont_GBK16(73,35,YELLOW,BLACK,"%");
                               
                                if(KEY_U==0)u3_printf("ad1(A5): %d \r\n",ADvalue_PA5);//A5
                                switch(AD_PA5)
                                        {
                                                case 0:TIM1->CCR1 = 10*(100-100);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,0) ;                       
                                                        break;
                                                case 1:TIM1->CCR1 = 10*(100-100);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,0) ;               
                                                        break;
                                                case 2:TIM1->CCR1 = 10*(100-92);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,1) ;       
                                                        break;
                                                case 3:TIM1->CCR1 = 10*(100-85);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,1) ;       
                                                        break;
                                                case 4:TIM1->CCR1 = 10*(100-77);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,2) ;       
                                                        break;
                                                case 5:TIM1->CCR1 = 10*(100-70);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,2) ;       
                                                        break;
                                                case 7:TIM1->CCR1 = 10*(100-63);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,3) ;       
                                                        break;
                                                case 8:TIM1->CCR1 = 10*(100-56);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,3) ;               
                                                        break;
                                                case 9:TIM1->CCR1 = 10*(100-49);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,4) ;       
                                                        break;
                                                case 10:TIM1->CCR1 = 10*(100-42);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,4) ;       
                                                        break;
                                                case 11:TIM1->CCR1 = 10*(100-35);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,5) ;       
                                                        break;
                                                case 12:TIM1->CCR1 = 10*(100-27);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,5) ;       
                                                        break;
                                                case 13:TIM1->CCR1 = 10*(100-21);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,6) ;       
                                                        break;
                                                case 14:TIM1->CCR1 = 10*(100-14);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,7) ;       
                                                        break;
                                                case 15:TIM1->CCR1 = 10*(100-7);                        Gui_DrawFont_Num32(40,60,YELLOW,BLACK,8) ;       
                                                        break;
                                                       
                                        }               
                       
                        if(KEY_L==0)
                        {
                                First=0;
                                Lcd_Clear(BLACK);
                                p=&Mode_Main;
                                ASite.y=30;
                                p();
                        }
                        }
                }
                else if(p==Mode_Third)//èy¼¶Æá2ù×÷
                {
                        First=1;
                        while(First==1)
                        {       
                                 if(KEY_U==0)
                                  {
                                        delay_ms(100);
                                         if(KEY_U==0)
                                        {
//                                          while(KEY_U==0);
                                                pwm1-=2;if(pwm1<=1)pwm1=99;
                                        }
                                  }
                                else if(KEY_D==0)
                                  {
                                        delay_ms(100);
                                        if(KEY_D==0)
                                        {
//                                         while(KEY_D==0);
                                        pwm1+=2;if(pwm1>=99)pwm1=1;
                                        }
                                  }                           
                                TIM1->CCR1 = 10*(100-pwm1);
                                if(KEY_R==0)
                                {       
                                        if(KEY_R==0)
                                        {
                                                u3_printf("PWM: %d %%\r\n",pwm1);
                                        }
                                }                                   
                                if(KEY_L==0)
                                {
                                        First=0;
                                        Lcd_Clear(BLACK);
                                        p=&Mode_Main;
                                        ASite.y=30;
                                        p();
                                }
                        }
                }
                else if(p==Mode_Fourth)//Ëļ¶Æá2ù×÷
                {
                        Ultrasonic_TX();
                        if(KEY_U==0)Dis_set++;
                        if(Dis_set>99)Dis_set=10;                       
                        if(Distance<Dis_set&&SR501_data==1)
                        {
//                                Color_Test();
                                GPIO_SetBits(GPIOC, GPIO_Pin_13 );       
                        }
                        else GPIO_ResetBits(GPIOC, GPIO_Pin_13 );       
                        Gui_DrawFont_GBK16(5,5,YELLOW,BLACK,"Dis_set:");
                        LCD_ShowxNum(55,20,&Dis_set,2);
                        Gui_DrawFont_GBK16(85,5,YELLOW,BLACK,"cm");
                        if(KEY_L==0)
                        {
                                Lcd_Clear(BLACK);
                                p=&Mode_Main;
                                ASite.y=30;
                                p();
                        }
                       
                }
//                else if(p==Mode_Fifth)//Îå¼¶Æá2ù×÷
//                {                       
//                        if(KEY_L==0)
//                        {
//                                Lcd_Clear(BLACK);
//                                p=&Mode_Main;
//                                ASite.y=30;
//                                p();
//                        }       
//                }
        }
       
        return -1;
}

void *Mode_Main(void)
{
        Gui_DrawFont_GBK16(6,30,YELLOW,BLACK,"->");
        Gui_DrawFont_GBK16(24,30,YELLOW,BLACK,"Man-Contr");
        Gui_DrawFont_GBK16(24,45,YELLOW,BLACK,"Auto-Contr");
        Gui_DrawFont_GBK16(24,60,YELLOW,BLACK,"Casual-Contr");
//        Gui_DrawFont_GBK16(24,75,YELLOW,BLACK,"Mode 4:");
//        Gui_DrawFont_GBK16(24,90,YELLOW,BLACK,"Mode 5:");       
//        LCD_ShowNum(24,20,1,2,12);
//        LCD_ShowChar(24,50,1,12);
}

void *Mode_First(void)
{
        Lcd_Clear(BLACK);       
       
}

void *Mode_Second(void)
{
        Lcd_Clear(BLACK);
}

void *Mode_Third(void)
{
        Lcd_Clear(BLACK);
        Gui_DrawFont_GBK16(40,30,YELLOW,BLACK,"Up:+");
        Gui_DrawFont_GBK16(40,45,YELLOW,BLACK,"Down:-");
}

void *Mode_Fourth(void)
{
        Lcd_Clear(BLACK);       
}

void *Mode_Fifth(void)
{
        Lcd_Clear(BLACK);       
}

void Mode_Selection(void)
{       
       
        switch(lightmove(&ASite))
        {
            case mode1: p=&Mode_First;ASite.y=0;p();
                        break;
                case mode2: p=&Mode_Second;p();
                        break;
                case mode3: p=&Mode_Third;ASite.y=0;p();
                        break;
                case mode4: p=&Mode_Fourth;p();
                        break;
                case mode5: p=&Mode_Fifth;ASite.y=0;p();
                        break;
               
                default:
                        break;
        }
       
}

void Time_W()
{
Lcd_Clear(BLACK);

}

回復

使用道具 舉報

6#
ID:739217 發表于 2020-5-11 00:24 來自手機 | 只看該作者
handily 發表于 2019-5-11 11:36
我剛做了一個,坐姿矯正,自動開關燈,一定時間提示,自動手動調光,正好跟我做的一樣,你這300黑幣我能獲 ...

求教,有原理圖和pcb圖嘛
回復

使用道具 舉報

7#
ID:758116 發表于 2020-5-22 12:54 | 只看該作者
handily 發表于 2019-5-11 11:36
我剛做了一個,坐姿矯正,自動開關燈,一定時間提示,自動手動調光,正好跟我做的一樣,你這300黑幣我能獲 ...

我也想要可以看看嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久激情网 | 国产一二三区在线 | 久久伊人操 | 国产精品美女久久久久久免费 | www.玖玖玖 | 欧美精品一区二区三区四区 | 亚洲午夜视频 | 伊人艹| av在线播放国产 | 一区二区三区四区国产 | 久久国产精品一区 | 成人国产精品一级毛片视频毛片 | 久久久久久久久久久久亚洲 | 韩国主播午夜大尺度福利 | 一区二区精品 | 国产高清一区二区三区 | 视频在线一区二区 | 成人免费在线电影 | 91在线观看免费 | 天天操一操 | 成人网av | 国产精品无 | 欧美一区二区三区在线观看 | 精品美女在线观看视频在线观看 | 国产成人精品久久二区二区91 | 国产精品久久久久久久7电影 | www.yw193.com | 中文字幕国产精品 | 国产中文字幕亚洲 | www亚洲精品 | 日韩专区中文字幕 | 欧美综合一区二区 | 国产精品高潮呻吟久久 | av资源中文在线天堂 | 精品国产亚洲一区二区三区大结局 | 国产一区二区在线免费观看 | 四虎永久在线精品免费一区二 | 欧美第一区 | 人人精品 | 一本一道久久a久久精品综合蜜臀 | 精品国产一区二区三区久久狼黑人 |