This commit is contained in:
ivan 2019-04-20 23:44:37 +03:00
commit dc36f1906c
7 changed files with 162 additions and 0 deletions

27
LICENSE Normal file
View File

@ -0,0 +1,27 @@
This source code is released under the DWTW license.
This program is free software; you can redistribute it and/or modify it under the terms of the Do What Thou Wilt License.
Boundless Public License
DO WHAT THOU WILT
TO PUBLIC LICENSE
Version 2.55
Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it in full or in part is allowed without any restrictions.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. Do what thou wilt shall be the whole of the Law.
DWTWL a license with a single requirement: DO WHAT THOU WILT
The license provides more freedom than any other one (such as GPL or BSD) and does not require saving the license text on copying.
DWTWL an accomplished and eligible license for free text, code and any other symbols (including the software, documentation and artwork).
The license does not contain a "no warranty" clause. DWTWL can be used in countries that do not legally acknowledge the transition to public domain.
Summary:
An author-creator gives their source code to the world for free, without becoming distracted by worldly thinking regarding how and why the others will use it.

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# display sensor button
![displaysensorbutton](https://dev.ussr.win/microcontrollers/displaysensorbutton/raw/branch/master/displaysensorbutton_bb.png)

BIN
displaysensorbutton.fzz Normal file

Binary file not shown.

124
displaysensorbutton.ino Normal file
View File

@ -0,0 +1,124 @@
#include <Arduino.h>
#include <Thread.h>
#include <SevenSegmentExtended.h> // DisplayLib // Extended TM1637 library https://github.com/bremme/arduino-tm1637
#include "DHT.h" // DHTlib
#define DHTPIN 5 // DHTsensorSetting // DHT pin
#define DHTTYPE DHT22 // DHTsensorSetting // DHT11 / DHT21 / DHT22
DHT dht(DHTPIN, DHTTYPE); // DHTsensorSetting
const byte PIN_CLK = 2; // DisplaySetting // CLK pin
const byte PIN_DIO = 3; // DisplaySetting // DIO pin
bool displayOn = false; // DisplaySetting // Boolian for store display power status
SevenSegmentExtended display(PIN_CLK, PIN_DIO); // DisplaySetting
const byte buttonPin = 4; // ButtonSetting // Button pin (a 10K resistor is necessary)
long buttonPressed = 0; // ButtonSetting // Button ms pressed counter
long previousButtonMillis = 0; // ButtonSetting // Button previous press counter
byte buttonView = 0; // ButtonSetting // Button viewing state
int buttonInterval = 10000; // ButtonSetting // Interval for highlighting 4-Digit Display after pressing button
int buttonLongPress = 2500; // ButtonSetting // Interval for long press button action
int buttonCheck = 200; // ButtonSetting // Interval for checking button state
// Threads:
Thread pressButtonThread = Thread(); // Create thread for button state checking
void setup() {
Serial.begin(9600); // Initializes the Serial connection @ 9600 baud for debug
dht.begin(); // DHTsensorSetting // Initializes the sensor
display.begin(); // DisplaySetting // Initializes the display
displayOn = true; // Display On
display.setBacklight(100); // Display On - set the brightness to 100 %
display.print("INIT-TINI"); // Display initialization
pinMode(buttonPin, INPUT); // ButtonSetting
// Button state cheking thread:
pressButtonThread.onRun(pressButton);
pressButtonThread.setInterval(buttonCheck);
display.off(); // Display Off
displayOn = false; // Display Off
}
void loop() {
// Threads init:
if (pressButtonThread.shouldRun())
pressButtonThread.run();
// Serial interaction:
if (Serial.available() > 0) {
int incomingByte = Serial.read() - 48;
if (incomingByte == 5) {
float humFloat;
readDHThum(&humFloat);
Serial.println(humFloat);
}
if (incomingByte == 6) {
float tempFloat;
readDHTtemp(&tempFloat);
Serial.println(tempFloat);
}
}
}
// Check button pressing thread
void pressButton() {
// Display off after buttonInterval ms slack
unsigned long currentMillis = millis();
if (currentMillis - previousButtonMillis > buttonInterval) {
previousButtonMillis = currentMillis;
if (displayOn == true) {
display.off();
displayOn = false;
}
}
if (digitalRead(buttonPin) == HIGH) {
buttonPressed = buttonPressed + 200;
if (buttonPressed > buttonLongPress) {
buttonPressed = 0;
longPress();
}
previousButtonMillis = currentMillis;
display.on();
displayOn = true;
if (buttonView == 0) {
float tempFloat;
readDHTtemp(&tempFloat);
int tempInt = (int)tempFloat;
if (tempInt < 0)
tempInt = tempInt * (-1);
byte rawData[4];
rawData[0] = display.encode(tempInt / 10);
rawData[1] = display.encode(tempInt % 10);
rawData[2] = B01100011; // degree
rawData[3] = display.encode('c');
display.printRaw(rawData);
} else if (buttonView == 1) {
float humFloat;
readDHThum(&humFloat);
int humInt = (int)humFloat;
byte rawData[4];
rawData[0] = display.encode('h');
rawData[1] = display.encode('u');
rawData[2] = display.encode(humInt / 10);
rawData[3] = display.encode(humInt % 10);
display.printRaw(rawData);
}
if (buttonView < 1) buttonView += 1;
else buttonView = 0;
} else {
buttonPressed = 0;
}
}
// DHT Temperature
void readDHTtemp(float *a) {
float t = dht.readTemperature();
*a = t;
}
// DHT Humidity
void readDHThum(float *a) {
float h = dht.readHumidity();
*a = h;
}
void longPress() {
display.print("-doctor-equivalent-me-");
}

BIN
displaysensorbutton_bb.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

4
gethum.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
echo "5" > /dev/ttyUSB0
HUM=`dd if=/dev/ttyUSB0 count=1`
echo $HUM

4
gettemp.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
echo "6" > /dev/ttyUSB0
TEMP=`dd if=/dev/ttyUSB0 count=1`
echo $TEMP