
Atmega 四路传感器多用途开发板
简介
基于Atmega48(目前最便宜的Atmega芯片)的传感器开发板,支持Arduino IDE
简介:基于Atmega48(目前最便宜的Atmega芯片)的传感器开发板,支持Arduino IDE开源协议
:Public Domain
描述
项目的说明
这一个设计,主要是使用了有限的成本的情况下,便于编程和快速应用,我特意的采用了Atmega48,这个目前算是廉价并且容易获取的,最低只要6元(不含邮费),推力大(单个引脚10ma)并且还是5V。
关键,用的Arduino IDE,不过当下没有Bootloader所以你需要一个USBASP或者编程器,我使用的TH866A,这个还挺好用的。
在设计原因上,我是想说能建议的配置传感器和执行器,什么是执行器,比如继电器、单路MOS管等等,因此PCB上配了很大的接口,这种接口能拔插并且连接牢固,我很喜欢。
非常推荐使用Atmega8。
测试的方法
首先就是测试代码,这一段代码主要是验证三个灯是否能使用。

void setup() {
// put your setup code here, to run once:
pinMode(PD7,OUTPUT);
pinMode(10,OUTPUT);
pinMode(2,OUTPUT);
digitalWrite(PD7,HIGH);
digitalWrite(PB2,HIGH);
digitalWrite(2,HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
delay(50);
digitalWrite(PD7,HIGH);
delay(50);
digitalWrite(10,LOW);
delay(50);
digitalWrite(2,LOW);
delay(50);
digitalWrite(PD7,LOW);
delay(50);
digitalWrite(10,HIGH);
delay(50);
digitalWrite(2,HIGH);
}
在设计考虑上,三个灯分别作用为
黄色等待:正在传感中
绿色激活:传感到设置的值或目标,已经触发动作
红色错误:一些问题,比如说传感器数值有毛病
两个按钮的作用很明确,就是为了提供很好的手感并且容易安装,所以用的是五个jio的机械键盘轴。
这一款在电路元件上面尽量缩减了预算,所以没有设置常见的串口转USB,但是我配置有一套锂电池升压电路,可以稳定输出5V到Atmega48,但输入的电压不能超过5V,不然输入多少就输出多少。

因为没有Bootloader可用,所以也没必要引出DTR一类引脚,因此板载上省略。
需要注意的是连接的电池必须有保护板,没有设计充电电路,可自选常见的充电模块并联到电池输入端。
注:需要安装MiniCore库,在原理图上都已经标注好
验证代码
配合模块TM1367,接OUT1-2,使用到的库:SevenSegmentTM1637.h
附加开发板管理器网址:https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
// include the SevenSegmentTM1637 library
#include "SevenSegmentTM1637.h"
/* initialize global TM1637 Display object
* The constructor takes two arguments, the number of the clock pin and the digital output pin:
* SevenSegmentTM1637(byte pinCLK, byte pinDIO);
*/
//#include"LowPower.h"
const byte PIN_CLK = 5; // define CLK pin (any digital pin)
const byte PIN_DIO = 6; // define DIO pin (any digital pin)
#define LEDWAIT PD2
#define LEDACT 7
#define LEDERR 10
#define MODE 4
#define SEL 3
SevenSegmentTM1637 display(PIN_CLK, PIN_DIO);
// run setup code
void setup() {
Serial.begin(9600); // initializes the Serial connection @ 9600 baud
display.begin(); // initializes the display
display.setBacklight(100); // set the brightness to 100 %
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(LEDWAIT,OUTPUT);
pinMode(LEDACT,OUTPUT);
pinMode(LEDERR,OUTPUT);
pinMode(LEDWAIT,HIGH);
pinMode(LEDACT,LOW);
pinMode(LEDERR,LOW);
display.print((int)((analogRead(A7)/1024.0)*100.0));
delay(1000);
display.print("3600");
};
int overtime = 15000;//sleep
void down()
{
display.clear();
while(1);
//LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
// run loop (forever)
long int syst=0;
long int lastsyst=0;
void loop() {
syst=millis();
if(syst-lastsyst>overtime)
{
down();
} // display LOOP on the display
digitalWrite(LEDWAIT,HIGH);
if(digitalRead(MODE) == HIGH)
{
lastsyst = millis();
Run();
}
if(digitalRead(SEL) == HIGH)
{
lastsyst = millis();
timeswitch();
}
}
int mode = 0;
int times = 3600;
void timeswitch()
{
mode += 1;
switch(mode){
case 0:
times = 3600;
break;
case 1:
times = 1800;
break;
case 2:
times = 600;
break;
case 3:
times = 300;
break;
default:
mode = 0;
times = 3600;
break;
}
display.clear();
display.print(times);
delay(200);
}
void Run()
{
digitalWrite(LEDWAIT,LOW);
digitalWrite(LEDACT,HIGH);
for (int i=times; i > 0; i--) { // loop from 0 to 100
display.print(i); // display loop counter
delay(1000); // wait 100 ms
};
display.clear(); // clear the display
display.print("OVER"); // print SUCC for success
display.blink(); // blink SUCC
delay(10000); // wait 1000 ms
digitalWrite(LEDWAIT,HIGH);
}

设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论