arduino一些内容

arduino 套件使用说明书V1.0.pdf,

步进电机

DHT11

传感器另外一脚要接A0

/*
  Web client

 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield. 

 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13

 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe, based on work by Adrian McEwen

 */

#include <SPI.h>
#include <Ethernet.h>

#define DHT11_PIN 1

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// if you don‘t want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "192.168.1.95";    // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192,168,99,177);

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void uploadData(String c,String h){
    // if you get a connection, report back via serial:
  if (client.connect(server, 6543)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /DHT11Data.ashx?C="+c+"&h="+h+" HTTP/1.1");
    client.println("Host:192.168.1.95");
    client.println("Connection: close");

    client.println();
    delay(10);
    // if there are incoming bytes available
    // from the server, read them and print them:
    while (client.available()) {
      char c = client.read();
      Serial.print(c);
    }
  }
  else {
    // kf you didn‘t get a connection to the server:
    Serial.println("connection failed");
  }

    // if the server‘s disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:

  }
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result = 0;
  for(i=0;i<8;i++)
  {
    while(!(PINC&_BV(DHT11_PIN)));
    delayMicroseconds(30);
    if(PINC&_BV(DHT11_PIN))
      result|=(1<<(7-i));
    while((PINC&_BV(DHT11_PIN)));
  }
  return result;
}

void setup() {

   DDRC|=_BV(DHT11_PIN);
  PORTC|=_BV(DHT11_PIN);
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("Ready");

}

void loop()
{
  byte dht11_dat[5];
  byte dht11_in;
  byte i;
  PORTC &= ~_BV(DHT11_PIN);
  delay(18);
  PORTC|=_BV(DHT11_PIN);
  delayMicroseconds(40);
  DDRC &= ~_BV(DHT11_PIN);
  delayMicroseconds(40);
  dht11_in = PINC & _BV(DHT11_PIN);
  if(dht11_in)
  {
    Serial.println("dht11 start condition 1 not met");
    return;
  }

  delayMicroseconds(80);
  dht11_in=PINC & _BV(DHT11_PIN);
  if(!dht11_in)

  {
    Serial.println("dht11 start condition 2 not met");
    return;
  }

  delayMicroseconds(80);
  for(i=0;i<5;i++)
    dht11_dat[i]=read_dht11_dat();
  DDRC|=_BV(DHT11_PIN);
  PORTC|=_BV(DHT11_PIN);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
  if(dht11_dat[4]!=dht11_check_sum)
  {
    Serial.println("DHT11 checksum error");
  }

 uploadData(String(dht11_dat[2]) +"." +String(dht11_dat[3]),String(dht11_dat[0]) +"." +String(dht11_dat[1]) );

  Serial.print("Current humdity= ");
  Serial.print(String(dht11_dat[0]));
  Serial.print(".");
  Serial.print(dht11_dat[1],DEC);
  Serial.print("%");
  Serial.print("temperature = ");
  Serial.print(dht11_dat[2],DEC);
  Serial.print(".");
  Serial.print(dht11_dat[3],DEC);
  Serial.println("C");

  delay(1000);
}

时间: 2024-10-13 03:55:59

arduino一些内容的相关文章

使用Arduino开发板制作交流电压表

在本文中,我们将使用Arduino开发板制作一个交流电压测量装置,测量我们家中交流电源的电压.我们将在Arduino IDE的串行监视器上打印输出该电压,并在万用表上显示出来. 制作数字电压表比模拟电压更容易一些,因为在制作模拟电压表时,您必须具备一些物理参数的知识,如扭矩.摩擦损耗等.然而在制作数字电压表时,您只需使用LCD或LED矩阵或甚至你的笔记本电脑打印输出电压值即可. 所需的元件 ●  一个220-12变压器 ●   1N4007二极管 ●   1uf电容 ●   10k和4.7K电阻

如何使用Arduino UNO开发板编程ATtiny85

最近在Youtube上看了一个GreatScott制作的有关如何使用Attiny85的精彩教程,之后我购买了一片Attiny85 IC.但是,我花了很长时间尝试在它上面运行一个简单的LED闪烁的代码.最后经过很多次的搜索,终于找到唯一适用于我的方法.我决定做一个简单的教程,任何人都能理解. 需要的工具 1.    一片attiny85或attiny45 2.     Arduino Uno开发板 3.     几根导线 4.     一个10uF电容 5.     面包板 首先,对于本文介绍的方

Arduino Tian开发板:一个功能强大的天气预报中心

每天都在出现新的连接设备. Arduino携手云平台一起加入这场战斗,于是出现了一个新的挑战者 - Arduino Tian! 使用python和经典Arduino框架,本教程将引导您将您的Arduino Tian开发板变成一个天气预报中心. 但由于Lucky扩展板有那么多传感器,所以涉及到的内容可能会更多些! 第一部分:所需的设备 ●     Arduino Tian开发板(https://store.arduino.cc/arduino-genuino/arduino-genuino-boa

Arduino Nano + WIZ550io = 简易上网

我爱Arduino Nano – 这是一个非常好外形小巧却功能齐全的Arduino Uno.然而.当我去将它连接到互联网,全部的干净利落小巧也消失在大尺寸的以太网盾底下了. 只是,我近期发现了一个更好的,更紧凑的方式给我的nano连接到互联网 – 通过使用WIZnet公司小巧得多(且更廉价)的WIZ550io模块! 假设你想方便连接,你能够找到一个可连接该模块和Arduino Uno的适配器板,但我想保持小巧的子板.通过我的Nano把它们直接连接在一起.然而.假设你没有适配板,你能够利用同样的方

具有避障和寻线功能的Arduino小车

标签:  Arduino  乐高  机器人 创客对于成年人来说,多半是科技娱乐,或者是一种是一种向往科技的人生态度,总是希望自己不仅可以看到或者听到科技的资讯,还希望能够亲身制作科技玩意,从而更好地体验科技. 说到科技娱乐,也就是做东西,不需要什么指标,高兴即可,所以做些容易的,也是OK的.这次带来的作品又是Arduino与乐高结合的小车,小车具有简单的避障和寻线功能. 避障传感器是夏普GP2Y0A21红外测距传感器,它是模拟量传感器,该传感器测距范围为10cm~80cm.Arduino模拟量信

Arduino I2C + 温湿度传感器Si7021

  Si7021是Silicon Labs生产的温湿度传感器芯片.其主要特性: 湿度精度:误差典型值+/-2%RH,最大值+/-3%RH(0~80%RH),出厂已校正 温度精度:误差典型值+/-0.3%°C,最大值+/-0.4%°C(-10°C~85°C),出厂已校正 测量范围:温度范围0~100%RH:温度范围最大-40°C~125°C 工作电压:1.9~3.6V 低功耗:工作时150μA,待机时60nA 接口:I2C,最大速率支持400kbps 长期稳定性:湿度≤0.25%RH/yr,温度≤

Arduino + SmartAirFilter 制作智能感应的 PM 空气净化器

先说 SmartAirFilters 知道 SmartAirFilters 源自微博上转发的非常火的那个帖子,和动辄七八千元的商用产品比,几百元的 SmartAirFilters(下面简称电扇) 确实不贵.一次和朋友在清华科技园里附近的咖啡馆聊天,正好遇见他们在那里做 DIY 体验工坊,作为 DIYer 爱好者,理所应当给个赞,就败了个 1.0 试一试. 空气 PM 的监控 空气过滤效果究竟怎样?作为数据控,理所应当必须看数据说话.正好在玩 Arduino Yun,就起意搞个灰尘传感器监控一下.

关于arduino清空串口缓存(转)

在arduino1.0之前的版本 Serial.flush()的作用是是清空串口缓存( dropping received incoming data).但在1.0之后的版本 Serial.flush()的作用调整为了等待串口数据传送完毕(Waits for the transmission of outgoing serial data to complete.)(引用自http://arduino.cc/en/Serial/Flush). 因为我在使用wifibee的过程中,如果既想用Ser

使用Notepad++代替笨拙的Arduino IDE

Arduino自带的IDE 太不好用了,下面是用强大,轻量级,免费,开源,丰富插件的的Notepad++编辑器来打造Arduino开发环境 . 配置过程对新生来说可能有些繁琐,但是我尽力写的很详细了,一步一步来一定会配置好的. 准备工具 1. Notepad++                                 百度即可下载 2. Arduino IDE                                国内链接  http://pan.baidu.com/s/1miA