冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 630|回覆: 0
打印 上一主題 下一主題

[討論] Atmel ATtiny2313-20PU 製作心跳圖機器

[複製鏈接]

2609

主題

0

好友

1000

積分

金牌會員

Rank: 6Rank: 6

UID
373967
帖子
8888
主題
2609
精華
0
積分
1000
楓幣
3
威望
977
存款
34995
贊助金額
0
推廣
0
GP
1205
閱讀權限
70
在線時間
456 小時
註冊時間
2023-1-12
最後登入
2024-11-26

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-8 08:41:03 |只看該作者 |倒序瀏覽
製作心跳圖機器所需的零件包括:

ATtiny2313-20PU微控制器
心跳傳感器(例如脈搏氧飽和度傳感器)
OLED顯示屏
電源供應器
電容、電阻和連接線等電子元件
PCB板
ATtiny2313-20PU的連接腳位如下:


          __ __
RESET   -|  U  |-   VCC
        -|     |-   PB0   /OC0A
        -|     |-   PB1   OC0B
        -|     |-   PB2
        -|     |-   PB3   /OC2A
        -|     |-   PB4
        -|     |-   PB5
        -|     |-   AVCC
        -|     |-   GND
        -|_____|-   PB6
請注意:在使用ATtiny2313-20PU微控制器時,必須注意每個腳位的功用和使用方式。建議您在製作前仔細閱讀技術規格書和連接圖。

下面是一個簡單的心跳圖機器程式碼,您可以根據自己的需求進行修改和調整:


#include <avr/io.h>
#include <util/delay.h>

#define OLED_SDA PB0
#define OLED_SCL PB1
#define OLED_RST PB2

#define OLED_ADDR 0x3C

#define OLED_CMD 0x00
#define OLED_DATA 0x40

void i2c_start(void);
void i2c_stop(void);
void i2c_send_byte(unsigned char byte);
void oled_init(void);
void oled_clear_display(void);
void oled_write_char(unsigned char c);
void oled_write_string(char* str);

int main(void) {
    // 初始化IO端口
    DDRB |= (1<<OLED_SDA) | (1<<OLED_SCL) | (1<<OLED_RST);

    // 初始化OLED顯示屏
    oled_init();
    oled_clear_display();
    oled_write_string("Heart Rate Monitor");

    while (1) {
        // 讀取心跳傳感器的值
        int heart_rate = read_heart_rate();

        // 在OLED顯示屏上顯示心跳數值
        char heart_rate_str[16];
        sprintf(heart_rate_str, "Heart Rate: %d", heart_rate);
        oled_write_string(heart_rate_str);

        // 延遲1秒鐘
        _delay_ms(1000);
    }

    return 0;
}

void i2c_start(void) {
    // 向OLED顯示屏發送I2C啟動信號
    // 略
}

void i2c_stop(void) {
    // 向OLED顯示屏發送I2C停止信號
    // 略
}

void i2c_send_byte(unsigned char byte) {
    // 向OLED

void oled_init(void) {
i2c_start();
i2c_send_byte(OLED_ADDR << 1);
i2c_send_byte(OLED_CMD);
i2c_send_byte(0xAE); // display off
i2c_send_byte(0xD5); // set display clock divide ratio/oscillator frequency
i2c_send_byte(0x80);
i2c_send_byte(0xA8); // set multiplex ratio
i2c_send_byte(0x3F);
i2c_send_byte(0xD3); // set display offset
i2c_send_byte(0x00);
i2c_send_byte(0x40); // set start line
i2c_send_byte(0x8D); // set charge pump
i2c_send_byte(0x14);
i2c_send_byte(0x20); // set memory mode
i2c_send_byte(0x00);
i2c_send_byte(0xA1); // set segment remap
i2c_send_byte(0xC8); // set com output scan direction
i2c_send_byte(0xDA); // set com pins hardware configuration
i2c_send_byte(0x12);
i2c_send_byte(0x81); // set contrast control
i2c_send_byte(0xCF);
i2c_send_byte(0xD9); // set pre-charge period
i2c_send_byte(0xF1);
i2c_send_byte(0xDB); // set vcomh deselect level
i2c_send_byte(0x40);
i2c_send_byte(0xA4); // set entire display on/off
i2c_send_byte(0xA6); // set normal/inverse display
i2c_send_byte(0xAF); // display on
i2c_stop();
}

void oled_clear_display(void) {
i2c_start();
i2c_send_byte(OLED_ADDR << 1);
i2c_send_byte(OLED_CMD);
i2c_send_byte(0x21); // set column address
i2c_send_byte(0);
i2c_send_byte(127);
i2c_send_byte(0x22); // set page address
i2c_send_byte(0);
i2c_send_byte(7);
for (int i = 0; i < 128 * 8; i++) {
i2c_send_byte(0x00); // clear all pixels
}
i2c_stop();
}

void oled_write_char(unsigned char c) {
i2c_start();
i2c_send_byte(OLED_ADDR << 1);
i2c_send_byte(OLED_DATA);
for (int i = 0; i < 6; i++) {
i2c_send_byte(pgm_read_byte(font6x8 + (c - 32) * 6 + i)); // read font data from program memory
}
i2c_send_byte(0x00); // add a space between characters
i2c_stop();
}

void oled_write_string(char* str) {
while (*str) {
oled_write_char(*str++);
}
}

int read_heart_rate(void) {
// 從心跳傳感器讀取心跳數值
// 略
}
[發帖際遇]: 洪嵐峰 與「兩姊弟」穿名牌在臉書炒新聞、裝可憐賣「布丁」,大賺 1 楓幣 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1彩票
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-11-26 09:05

回頂部