haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 译文美国DIY综合制作 >

温度改变颜色的立方体

温度改变颜色的立方体

最近我做了一个相机,这样我就可以拍我的手站在焊接和组装我的项目(教学这个即将到来)。这是一个启动项目的测试设备!(我做了一个礼物亨克rijckaert

这是6cm×6cm×6cm魔方颜色的变化,基于温度!

步骤1:零件所需要的

温度改变颜色的立方体

你将需要以下:
- TMP36温度传感器
- RGB LED,我用共阳极,但可以共阴极可以用一个小的变化
- attiny85
8引脚DIP插座
- lm1117t 3.3V线性稳压器
2倍的50欧姆的电阻
10µμF的电容
-试验电路板
- 4xaaa电池座(不在照片中)

将我一片30x60cm 3MM的密度板和一张30x60cm 3mm丛用激光刀的情况下。你不需要全表,但我把它放在。一些有机水泥也使立方体需要。

编程,你要么需要一个Arduino的attiny85,这是我用的是什么,或一个特定的attiny85程序员板。

组装电子产品你需要烙铁和我用胶水afix的试验电路板的中密度纤维板。

步骤2:制作的立方体

温度改变颜色的立方体

该基地是一个简单的矢量图形,可以减少使用激光切割机或手工做的。这是略微抬高,适合电池座。后来的试验电路板热粘到铁轨。

有机的飞机也将与激光切割机,但在同一时间漫通过用激光制作微小的划痕。你也可以购买扩散丛,但那不是为我。

激光切割机的使用价值之间的黑色(0)和白色(255)表示划痕强度。为了看这值拟合最好的项目我打印测试飞机的每一个值。

丛水泥进行合适的拼在一起。为了使它更容易,我做了一个小的模具从一些废材一起举行。

 
  • 温度改变颜色的立方体plexi_preview.svg
    下载
  • 温度改变颜色的立方体laser_cutter_parts.svg
    下载

步骤3:焊接板

温度改变颜色的立方体

线路很简单,试验电路板上有一张图片的scematic和布局。当你完成后,你可以把试验电路板用热熔胶的基础。

一些方便的引脚图:

attiny85
TMP36
lm1117t
RGB LED

步骤4:编码

温度改变颜色的立方体

我用我的attiny85 Arduino纳米闪存芯片。本指南有助于建立董事会。你也可以使用一个特定的attiny85程序员板。

温度也不被以节省电池寿命。在attiny85睡眠模式是用来降低功耗。本代码是基于工作的网站上re-innovation.co.uk Matthew Little。来源

温度可以设置你喜欢的,默认被设置为18°C开关

代码如下,它可以下载附件。

#include <avr/sleep.h>;
#include <avr/wdt.h>;
// Routines to set and clear bits (used in the sleep code)
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
volatile boolean f_wdt = 1;
const int redPin = 1;
const int bluePin = 0;
const int sensorPin = 2;
const int fadeTime = 10;
// blue = 0, red = 1
int currentColor = 0;

void setup()
{
  pinMode(redPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  setup_watchdog(8);
  digitalWrite(bluePin, HIGH);
  digitalWrite(redPin, LOW);
}
 
void loop()
{
  if (f_wdt==1) {  // wait for timed out watchdog / flag is set when a watchdog timeout occurs
    f_wdt=0;       // reset flag
    checkTemp();
    system_sleep();  // Send the unit to sleep
  }
}

void checkTemp()
{
    int reading = analogRead(sensorPin);  
    float voltage = reading * 3.3;
    voltage /= 1024.0;
    float temperatureC = (voltage - 0.5) * 100 ;
    if(temperatureC > 18) {
        if(currentColor != 1){ 
 currentcolor = 1;
 fadetored();
 } 
 } else if!= 0) {
        currentColor = 0;
        fadeToBlue();
    }
}

void fadeToRed(){
  int redVal = 255;
  int blueVal = 0;
  for( int i = 0 ; i < 255 ; i += 1 ){
    blueVal += 1;
    redVal -= 1;
    analogWrite( bluePin, 255 - blueVal );
    analogWrite( redPin, 255 - redVal );
    
    delay( fadeTime );
  }
}

void fadeToBlue(){
  int redVal = 0;
  int blueVal = 255;
  for( int i = 0 ; i < 255 ; i += 1 ){
    blueVal -= 1;
    redVal += 1;
    analogWrite( bluePin, 255 - blueVal );
    analogWrite( redPin, 255 - redVal );
    
    delay( fadeTime );
  }
}

// set system into the sleep state 
// system wakes up when watchdog is timed out
void system_sleep() {
  
  cbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter OFF</p><p>  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
  sleep_enable();</p><p>  sleep_mode();                        // System actually sleeps here</p><p>  sleep_disable();                     // System continues execution here when watchdog timed out 
  
  sbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter ON
  
}

// <a href="http://www.re-innovation.co.uk/web12/index.php/en/blog-75/306-sleep-modes-on-attiny85" rel="nofollow"> http://www.re-innovation.co.uk/web12/index.php/en...</a>
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
void setup_watchdog(int ii) {
  byte bb;
  int ww;
  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<wdce);
  ww=bbl;
  MCUSR &= ~(1<<wdrf);

  // start timed sequence
  wdtcr |= (1<<WDCE) | (1<<WDE);
  // set a new watchdog timeout value
  WDTCR = bb;
  WDTCR |= _BV(WDIE);
}
 
  • 温度改变颜色的立方体colorcube.ino
    下载

步骤5:享受!

温度改变颜色的立方体

如果你遵循每一步正确的话,那么你现在应该已经在你身上一个立方体,传感器的温度!


(责任编辑:admin)
    haoDIY创好电子 版权所有,电话微信13977534587