极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13191|回复: 1

智能小风扇

[复制链接]
发表于 2016-1-12 20:08:31 | 显示全部楼层 |阅读模式
本帖最后由 wqkzplt 于 2016-1-12 20:08 编辑

多功能风扇
                                                                                             
姓名:吴乾坤、赵鹏、刘通                                                   
实验对象:智能家居-多功能风扇                         时间:2015年1月12日
                                    
一、应用与概述
在解决了基础物质生活需求的今天,随着科技的不断进步,人们的生活受到了潜移默化的影响,生活质量也不断得到提高。促使人们开始追求家庭生活现代化、居住环境舒适化、安全化等,为此智能家居也随之而生。它改变的不仅仅是家电产品的功能,而是生活方式,给消费者带来的便捷令人神往。
二、实验目的
   通过试验研究出智能家居多功能小风扇,使其能够实现远程红外遥控风速、转动方式等,还可以通过温度的变化而改变风速。并通过液晶显示器显示出时间、气温,并带有智能健康提醒功能。
三、实验器材
1.主控板
Arduino主板1个
面包板1个
按键开关2个
红外传感器1个
滑动变阻器1个
温度传感器1个
小风扇1个
倾斜开关1个
液晶显示屏1个
220欧姆电阻2个
导线若干
2.风扇摆动板
Arduino主板1个
面包板1个
舵机1个
红色LED灯1个
220欧姆电阻1个
导线若干
3.水位板
Arduino主板1个
面包板1个
七彩LED灯1个
蜂鸣器1个
滑动变阻器1个
光敏电阻1个
水位传感器一个
导线若干
四、总体结构与原理
1主控模块
通过时间函数让液晶屏显示时间及温度,通过摁动按键可调节时间,小风扇受滑动变阻器、温度传感器、倾斜开关控制,红外可遥控风扇转速的调节方式(人为滑动变阻器调控、温度自动调控)。倾斜开关起到安全作用,当风扇倾倒,电路自动断电。
连接图如下:




程序设计如下:
#include <IRremote.h>////////红外线定义
#include <LiquidCrystal.h>
#include <TimerOne.h>
#define LM35 A0
#define KEY_Min 6
#define KEY_Hour 7
LiquidCrystal lcd(12,11,5,4,3,2);                                                 //构造一个LiquidCrystal的类成员。使用数字IO 12,11,5,4,3,2
int RECV_PIN = 10;
int LED1 = 9;
int LED2 = 2;
int LED3 = 3;
int LED4 = 4;
int LED5 = 5;
int LED6 = 6;
long on1  = 0x00FFA25D;
long off1 = 0x00FFE01F;
long on2 = 0x00FF629D;
long off2 = 0x00FFA857;
long on3 = 0x00FFE21D;
long off3 = 0x00FF906F;
long on4 = 0x00FF22DD;
long f0 = 0x00FF6897;
long on5 = 0x00FF02FD;
long f100 = 0x00FF9867;
long on6 = 0x00FFC23D;
long f200 = 0x00FFB04F;
long f1 = 0x00FF30CF;
long f2 = 0x00FF18E7;
long f3 = 0x00FF7A85;
long f4 = 0x00FF10EF;
long f5 = 0x00FF38C7;
long f6 = 0x00FF5AA5;
long f7 = 0x00FF42BD;
long f8 = 0x00FF4AB5;
long f9 = 0x00FF52AD;
int val = 0;                                                                                                //存放AD变量值
float temp = 0;                                                                        
int potpin=1;//定义模拟接口0                                                      //存放温度值的10倍
int ledpin=9;//定义数字接口9(PWM 输出)
int hero=0;// 暂存来自传感器的变量数值
char timeBuf[3] = {
  0 ,0 ,0};
IRrecv irrecv(RECV_PIN);
decode_results results;
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
//  decode_results *results = (decode_results *)v
void dump(decode_results *results) {
  int count = results->rawlen;
  if (results->decode_type == UNKNOWN)
  {
    Serial.println("Could not decode message");
  }
  else
  {
    if (results->decode_type == NEC)
    {
      Serial.print("Decoded NEC: ");
    }
    else if (results->decode_type == SONY)
    {
      Serial.print("Decoded SONY: ");
    }
    else if (results->decode_type == RC5)
    {
      Serial.print("Decoded RC5: ");
    }
    else if (results->decode_type == RC6)
    {
      Serial.print("Decoded RC6: ");
    }
    Serial.print(results->value, HEX);
    Serial.print(" (");
    Serial.print(results->bits, DEC);
    Serial.println(" bits)");
  }
  Serial.print("Raw (");
  Serial.print(count, DEC);
  Serial.print("): ");
  for (int i = 0; i < count; i++)
  {
    if ((i % 2) == 1) {
      Serial.print(results->rawbuf*USECPERTICK, DEC);
    }
    else
    {
      Serial.print(-(int)results->rawbuf*USECPERTICK, DEC);
    }
    Serial.print(" ");
  }
  Serial.println("");
}
int on = 0;                                                                                         
unsigned long last = millis();////////红外线定义完
void setup()///////////////////////////////////////////////////////////////////////////////////
{
  lcd.begin(16,2);                                                                        //初始化LCD1602
  lcd.print("Welcome to use!");                                                     //液晶显示Welcome to use!
  delay(1000);                                                                                           //延时1000ms
  lcd.clear();                                                                                             //液晶清屏
  Serial.begin(9600);
  pinMode(KEY_Min,INPUT_PULLUP);                                      //定义KEY为带上拉输入引脚
  pinMode(KEY_Hour,INPUT_PULLUP);                                     //定义KEY为带上拉输入引脚
  pinMode(ledpin,OUTPUT);//定义数字接口11 为输出
  //init timer, 1sec interrupt
  pinMode(RECV_PIN, INPUT);////////红外线初始化
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(13, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver////////红外线初始化完
}
void timeDisplay()
{
  lcd.setCursor(0,0);            //设置液晶开始显示的指针位置
  lcd.print("time: ");                                                                           //液晶显示
  timeBuf[0]++;
  if (timeBuf[0] == 60)
  {
    timeBuf[0] = 0;
    timeBuf[1]++;
    if ( timeBuf[1] == 60)
    {
      timeBuf[1] = 0;
      timeBuf[2] ++;
      if(timeBuf[2] == 24)
      {
        timeBuf[2] = 0;
      }
    }
  }
  lcd.print(timeBuf[2]/10);
  lcd.print(timeBuf[2]%10);
  lcd.print(":");
  lcd.print(timeBuf[1]/10);
  lcd.print(timeBuf[1]%10);
  lcd.print(":");
  lcd.print(timeBuf[0]/10);
  lcd.print(timeBuf[0]%10);
  lcd.print("  ");
}
void ScanKey()                                                                                                        //按键扫描程序
{
  if(digitalRead(KEY_Min) == LOW)                                                  //有按键按下2w
  {
    delay(20);                                                                                                         //延时去抖动
    if(digitalRead(KEY_Min) == LOW)                                       //有按键按下
    {
      timeBuf[1]++;
      if ( timeBuf[1] == 60)
      {
        timeBuf[1] = 0;
        timeBuf[2] ++;
        if(timeBuf[2] == 24)
        {
          timeBuf[2] = 0;
        }
      }
    }
  }
  if(digitalRead(KEY_Hour) == LOW)                                                //有按键按下
  {
    delay(20);                                                                                                         //延时去抖动
    if(digitalRead(KEY_Hour) == LOW)                                              //有按键按下
    {
      timeBuf[2] ++;
      if(timeBuf[2] == 24)
      {
        timeBuf[2] = 0;
      }        
    }
  }
}
void (*resetFunc)(void)=0;
int n;
void loop()///////////////////////////////////////////////////////////////////////////////////////
{
// Timer1.initialize(1000000); // initialize timer1 and set interrupt period
  timeDisplay();
  val = analogRead(LM35);                                                          //读取AD值
  temp = val * 4.8876;                                                                        //转换为温度值的10倍,有利于液晶显示
  Serial.print("LM35 = ");                                                           
  Serial.println(temp/10);                                                                           //串口输出温度值
  //timeDisplay();
  ScanKey();
  //lcd.setCursor(0,0);                                                                                //设置液晶开始显示的指针位置
  //lcd.print("time: 22:43:43");                                                  
  lcd.setCursor(0,1);                                                                                  //设置液晶开始显示的指针位置
  lcd.print("temp: ");                                                                           //液晶显示温度整数值
  lcd.print((int)temp/10);                                                             //液晶显示温度整数值
  lcd.print(".");                                                                                                       //液晶显示小数点
  lcd.print((int)temp%10);                                                           //液晶显示温度小数值
  lcd.print((char)223);                                                                        //液晶显示“°”
  lcd.print("C    ");                                                                                               //液晶显示“C”
  delay(1000);
  if (results.value == on4 )
  {
    n=15;
    while(1)
    {
      hero=analogRead(potpin );// 读取传感器的模拟值并赋值给val
      Serial.println(hero);//显示val 变量                                 
      analogWrite(ledpin,hero/4);// 打开LED 并设置亮度(PWM 输
      delay(10);//延时0.01 秒
       timeDisplay();
       delay(1000);
      if (irrecv.decode(&results)) ////////红外线功能
      {
        // If it's been at least 1/4 second since the last
        // IR received, toggle the relay
        if (millis() - last > 250)
        {
          on = !on;
          //     digitalWrite(8, on ? HIGH : LOW);
          digitalWrite(13, on ? HIGH : LOW);
          dump(&results);
        }
        if (results.value == f0 )
        {
          digitalWrite(9,LOW);
          break;
        }
      }
    }
  }
  if (results.value == on5 )
  {
  //  n=5;
    while(1)
    {
      val = analogRead(LM35);                                                   //读取AD值
      temp = val * 4.8876;                                                                 //转换为温度值的10倍,有利于液晶显示
      Serial.print("LM35 = ");                                                   
      Serial.println(temp/10);                                                                    //串口输出温度值
      ScanKey();
      //lcd.setCursor(0,0);                                                                         //设置液晶开始显示的指针位置
      //lcd.print("time: 22:43:43");                                          
      lcd.setCursor(0,1);                                                                           //设置液晶开始显示的指针位置
      lcd.print("temp: ");                                                                    //液晶显示温度整数值
      lcd.print((int)temp/10);                                                      //液晶显示温度整数值
      lcd.print(".");                                                                                                //液晶显示小数点
      lcd.print((int)temp%10);                                                    //液晶显示温度小数值
      lcd.print((char)223);                                                                 //液晶显示“°”
      lcd.print("C    ");                                                                                        //液晶显示“C”
      delay(500);
      analogWrite(ledpin,(temp/10-18)*255/9);// 打开LED 并设置亮度(PWM 输
      delay(10);//延时0.01 秒
  timeDisplay();
      if (irrecv.decode(&results)) ////////红外线功能
      {
        // If it's been at least 1/4 second since the last
        // IR received, toggle the relay
        if (millis() - last > 250)
        {
          on = !on;
          //     digitalWrite(8, on ? HIGH : LOW);
          digitalWrite(13, on ? HIGH : LOW);
          dump(&results);
        }
        if (results.value == f100 )
        {
          digitalWrite(9,LOW);
          break;
        }
      }
    }
  }/*if (results.value == on3 )
   {
   n=5;
   while(1)
   {
   digitalWrite(2,HIGH);
   for (pos=0;pos<180;pos+=1)//舵机功能3 急回摇头
   {
   myservo.write(pos);//
   delay(n);//逆
   }
   for (pos=180;pos>=1;pos-=1)//
   {
   myservo.write(pos);//
   delay(n+15);//顺
  
   }
   if (irrecv.decode(&results)) ////////红外线功能
   {
   // If it's been at least 1/4 second since the last
   // IR received, toggle the relay
   if (millis() - last > 250)
   {
   on = !on;
   //     digitalWrite(8, on ? HIGH : LOW);
   digitalWrite(13, on ? HIGH : LOW);
   dump(&results);
   }
   if (results.value == off3 )
   {
   while(1)
   {digitalWrite(2,LOW);
   resetFunc();
   }
   }
   }
   ////////舵机3功能完
   }
   }*/
  if (irrecv.decode(&results)) ////////红外线功能
  {
    // If it's been at least 1/4 second since the last
    // IR received, toggle the relay
    if (millis() - last > 250)
    {
      on = !on;
      //     digitalWrite(8, on ? HIGH : LOW);
      digitalWrite(13, on ? HIGH : LOW);
      dump(&results);
    }
    // if (results.value == off1 )
    //digitalWrite(LED1, LOW);
    last = millis();     
    irrecv.resume(); // Receive the next value
  }//////////////////////////红外线功能完
}
2.舵机模块
通过红外遥控,可控制舵机的摆动状态,由此控制小风扇的摆动。
电路连接如下:






程序设计如下:
#include <IRremote.h>////////红外线定义
int RECV_PIN = 11;
int LED1 = 9;
int LED2 = 2;
int LED3 = 3;
int LED4 = 4;
int LED5 = 5;
int LED6 = 6;
long on1  = 0x00FFA25D;
long off1 = 0x00FFE01F;
long on2 = 0x00FF629D;
long off2 = 0x00FFA857;
long on3 = 0x00FFE21D;
long off3 = 0x00FF906F;
long on4 = 0x00FF22DD;
long f0 = 0x00FF6897;
long on5 = 0x00FF02FD;
long f100 = 0x00FF9867;
long on6 = 0x00FFC23D;
long f200 = 0x00FFB04F;
long f1 = 0x00FF30CF;
long f2 = 0x00FF18E7;
long f3 = 0x00FF7A85;
long f4 = 0x00FF10EF;
long f5 = 0x00FF38C7;
long f6 = 0x00FF5AA5;
long f7 = 0x00FF42BD;
long f8 = 0x00FF4AB5;
long f9 = 0x00FF52AD;
IRrecv irrecv(RECV_PIN);
decode_results results;
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
//  decode_results *results = (decode_results *)v
void dump(decode_results *results) {
  int count = results->rawlen;
  if (results->decode_type == UNKNOWN)
  {
    Serial.println("Could not decode message");
  }
  else
  {
    if (results->decode_type == NEC)
    {
      Serial.print("Decoded NEC: ");
    }
    else if (results->decode_type == SONY)
    {
      Serial.print("Decoded SONY: ");
    }
    else if (results->decode_type == RC5)
    {
      Serial.print("Decoded RC5: ");
    }
    else if (results->decode_type == RC6)
    {
      Serial.print("Decoded RC6: ");
    }
    Serial.print(results->value, HEX);
    Serial.print(" (");
    Serial.print(results->bits, DEC);
    Serial.println(" bits)");
  }
  Serial.print("Raw (");
  Serial.print(count, DEC);
  Serial.print("): ");
  for (int i = 0; i < count; i++)
  {
    if ((i % 2) == 1) {
      Serial.print(results->rawbuf*USECPERTICK, DEC);
    }
    else
    {
      Serial.print(-(int)results->rawbuf*USECPERTICK, DEC);
    }
    Serial.print(" ");
  }
  Serial.println("");
}
int on = 0;                                                                                         
unsigned long last = millis();////////红外线定义完
#include <Servo.h>////////舵机定义
Servo myservo;                                                                        
int pos = 0;                                                                               ////////舵机定义完
void setup()///////////////////////////////////////////////////////////////////////////////////
{
  myservo.attach(9);//舵机初始化9
    pinMode(RECV_PIN, INPUT);////////红外线初始化
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(13, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver////////红外线初始化完
}
void (*resetFunc)(void)=0;
int n;
void loop()///////////////////////////////////////////////////////////////////////////////////////
{
  if (results.value == on1 )
  {
    n=15;
    while(1)
    {
      digitalWrite(2,HIGH);
      for (pos=0;pos<180;pos+=1)//舵机功能1 缓和摇头
      {
        myservo.write(pos);//
        delay(n);//逆
      }
      for (pos=180;pos>=1;pos-=1)//
      {
        myservo.write(pos);//
        delay(n);//顺
      }
      if (irrecv.decode(&results)) ////////红外线功能
      {
        // If it's been at least 1/4 second since the last
        // IR received, toggle the relay
        if (millis() - last > 250)
        {
          on = !on;
          //     digitalWrite(8, on ? HIGH : LOW);
          digitalWrite(13, on ? HIGH : LOW);
          dump(&results);
        }
        if (results.value == off1 )
        {
          while(1)
          {digitalWrite(2,LOW);
            resetFunc();
          }
        }
      }
      ////////舵机功能1完
    }
  }if (results.value == on2 )
  {
    n=5;
    while(1)
    {
      digitalWrite(2,HIGH);
      for (pos=0;pos<180;pos+=1)//舵机功能2 快速摇头
      {
        myservo.write(pos);//
        delay(n);//逆
      }
      for (pos=180;pos>=1;pos-=1)//
      {
        myservo.write(pos);//
        delay(n);//顺
      }
      if (irrecv.decode(&results)) ////////红外线功能
      {
        // If it's been at least 1/4 second since the last
        // IR received, toggle the relay
        if (millis() - last > 250)
        {
          on = !on;
          //     digitalWrite(8, on ? HIGH : LOW);
          digitalWrite(13, on ? HIGH : LOW);
          dump(&results);
        }
        if (results.value == off2 )
        {
          while(1)
          {digitalWrite(2,LOW);
          resetFunc();
          }
        }
      }
      ////////舵机功能2完
    }
  }if (results.value == on3 )
  {
    n=5;
    while(1)
    {
      digitalWrite(2,HIGH);
      for (pos=0;pos<180;pos+=1)//舵机功能3 急回摇头
      {
        myservo.write(pos);//
        delay(n);//逆
      }
      for (pos=180;pos>=1;pos-=1)//
      {
        myservo.write(pos);//
        delay(n+15);//顺
      }
      if (irrecv.decode(&results)) ////////红外线功能
      {
        // If it's been at least 1/4 second since the last
        // IR received, toggle the relay
        if (millis() - last > 250)
        {
          on = !on;
          //     digitalWrite(8, on ? HIGH : LOW);
          digitalWrite(13, on ? HIGH : LOW);
          dump(&results);
        }
        if (results.value == off3 )
        {
          while(1)
          {digitalWrite(2,LOW);
            resetFunc();
          }
        }
      }
      ////////舵机3功能完
    }
  }
  if (irrecv.decode(&results)) ////////红外线功能
  {
    // If it's been at least 1/4 second since the last
    // IR received, toggle the relay
    if (millis() - last > 250)
    {
      on = !on;
      //     digitalWrite(8, on ? HIGH : LOW);
      digitalWrite(13, on ? HIGH : LOW);
      dump(&results);
    }
    // if (results.value == off1 )
    //digitalWrite(LED1, LOW);
      
    last = millis();     
    irrecv.resume(); // Receive the next value
  }//////////////////////////红外线功能完
}
3.水位模块
通过光敏电阻感光,若天黑,则不发出任何报警;当天亮时,如杯子中有水,则蜂鸣器发出音乐、七彩灯闪烁报警,提醒喝水(音量可通过滑动变阻器控制);当水被喝光时,通过水位传感器关掉报警装置。
电路连接如下:

程序设计如下:
int potpin=0;//&#65533;&#65533;&#65533;&#65533;&#291;&#65533;&#65533;&#1279;&#65533;0 &#65533;&#65533;&#65533;&#1273;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;
int ledpin=12;//&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1469;&#1279;&#65533;11 &#65533;&#65533;&#65533WM &#65533;&#65533;&#65533;&#65533;LED &#65533;&#65533;&#65533;&#65533;
int val;//&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;val
int buzzer=10;
int pin=1;
int vall;
void setup()
{
  pinMode(ledpin,OUTPUT);//&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1469;&#1279;&#65533;11 &#938;&#65533;&#65533;&#65533;
  Serial.begin(9600);//&#65533;&#65533;&#65533;ò&#65533;&#65533;&#65533;&#65533;&#65533;&#938;9600
}
void loop()
{val=analogRead(potpin);
vall=analogRead(pin);
  if(val<950)
  {
    digitalWrite(ledpin, HIGH);
#define NTD0 -1
#define NTD1 294
#define NTD2 330
#define NTD3 375
#define NTD4 393
#define NTD5 441
#define NTD6 495
#define NTD7 556
#define NTDL1 147
#define NTDL2 165
#define NTDL3 175
#define NTDL4 196
#define NTDL5 221
#define NTDL6 248
#define NTDL7 278
#define NTDH1 589
#define NTDH2 661
#define NTDH3 700
#define NTDH4 786
#define NTDH5 882
#define NTDH6 990
#define NTDH7 112
    //列出全部D调的频率
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
    //列出所有节拍
    int tune[]=                 //根据简谱列出各频率
    {
      NTD3,NTD3,NTD4,NTD5,
      NTD5,NTD4,NTD3,NTD2,
      NTD1,NTD1,NTD2,NTD3,
      NTD3,NTD2,NTD2,
      NTD3,NTD3,NTD4,NTD5,
      NTD5,NTD4,NTD3,NTD2,
      NTD1,NTD1,NTD2,NTD3,
      NTD2,NTD1,NTD1,
      NTD2,NTD2,NTD3,NTD1,
      NTD2,NTD3,NTD4,NTD3,NTD1,
      NTD2,NTD3,NTD4,NTD3,NTD2,
      NTD1,NTD2,NTDL5,NTD0,
      NTD3,NTD3,NTD4,NTD5,
      NTD5,NTD4,NTD3,NTD4,NTD2,
      NTD1,NTD1,NTD2,NTD3,
      NTD2,NTD1,NTD1
    };
    float durt[]=                   //根据简谱列出各节拍
    {
      1,1,1,1,
      1,1,1,1,
      1,1,1,1,
      1+0.5,0.5,1+1,
      1,1,1,1,
      1,1,1,1,
      1,1,1,1,
      1+0.5,0.5,1+1,
      1,1,1,1,
      1,0.5,0.5,1,1,
      1,0.5,0.5,1,1,
      1,1,1,1,
      1,1,1,1,
      1,1,1,0.5,0.5,
      1,1,1,1,
      1+0.5,0.5,1+1,
    };
    int length;
    //得用6号接口
    length=sizeof(tune)/sizeof(tune[0]);   //计算长度
    for(int x=0;x<length;x++)
    {
      tone(buzzer,tune[x]);
      delay(250*durt[x]);   //这里用来根据节拍调节延时,500这个指数可以自己调整,在该音乐中,我发现用500比较合适。
      noTone(buzzer);
      val=analogRead(potpin);//&#65533;&#65533;&#545;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#291;&#65533;&#65533;&#1461;&#65533;&#65533;&#65533;&#65533;&#1461;&#65533;&#65533;val
      vall=analogRead(pin);
      Serial.println(val);//&#65533;&#65533;&#702;val &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1461;
      Serial.println(vall);
      if(vall<=650)
      {
        while(1)
        {
          delay(1000);
          digitalWrite(ledpin,LOW);
        }
      }
    }
    delay(1000);
  }
}

六、实验总结与心得
此次综合实验,需要小组内成员密切协作,分工明确,相互探讨,互相鼓励,还要有勇于吃苦,不怕困难的韧劲。基础知识要扎实,思维要发散,实验热情要高,才能取得最后的胜利!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-4-24 11:47:12 | 显示全部楼层
楼主有没有联系方式,我想问几个问问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 04:31 , Processed in 0.041536 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表