Components and supplies
GUVA-S12SD UV sensor
Arduino Nano R3
0.96" I2C OLED Display
Tools and machines
Breadboard, 270 Pin
Apps and platforms
Arduino IDE
Project description
Code
UV_index_meter_code
arduino
1#include <SPI.h> 2#include <Wire.h> 3#include <Adafruit_GFX.h> 4#include <Adafruit_SSD1306.h> 5#include <Fonts/FreeSans9pt7b.h> 6#include <Fonts/Org_01.h> 7#include <Fonts/FreeMonoBoldOblique12pt7b.h> 8#include <Fonts/FreeMonoBoldOblique9pt7b.h> 9#define SCREEN_WIDTH 128 // OLED display width, in pixels 10#define SCREEN_HEIGHT 64 // OLED display height, in pixels 11 12// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) 13#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) 14Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); 15 16#define bitmap_height 128 17#define bitmap_width 64 18static const unsigned char PROGMEM bitmap[] = 19{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 210x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 220x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 230x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 240x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 280x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 290x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 300x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 310x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 350x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 360x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 370x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 380x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 390x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 400x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 410x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 420x00, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 430x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 440x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 450x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 460x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x0F, 0x00, 0x00, 470x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x1F, 0x00, 0x00, 480x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x1E, 0x00, 0x00, 490x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x3E, 0x00, 0x00, 500x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x78, 0x00, 0x3C, 0x00, 0x00, 510x01, 0xFE, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x7C, 0x00, 0x7C, 0x00, 0x00, 520x03, 0xFC, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x3C, 0x00, 0xF8, 0x00, 0x00, 530x07, 0xF8, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x3E, 0x00, 0xF8, 0x00, 0x00, 540x0F, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0x00, 550x0F, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x1F, 0x01, 0xE0, 0x00, 0x00, 560x1F, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x0F, 0x83, 0xE0, 0x00, 0x00, 570x1F, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x07, 0x83, 0xC0, 0x00, 0x00, 580x1F, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x07, 0xC7, 0xC0, 0x00, 0x00, 590x1F, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xCF, 0x80, 0x00, 0x00, 600x1F, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x03, 0xEF, 0x80, 0x00, 0x00, 610x1F, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x01, 0xFF, 0x00, 0x00, 0x00, 620x1F, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xFE, 0x00, 0x00, 0x00, 630x0F, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x07, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, 640x0F, 0xF8, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x00, 0x00, 650x07, 0xF8, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 660x03, 0xFC, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 670x01, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 680x00, 0xFF, 0x80, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 690x00, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 700x00, 0x3F, 0xF8, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 710x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 720x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 730x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 740x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 750x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 760x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 770x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 83}; 84 85 86void uv_index() 87{ 88 89 float sensorVoltage; 90 float sensorValue; 91 int UV_index; 92 String quality =""; 93 sensorValue = analogRead(A0); 94 sensorVoltage = sensorValue/1024*5.0; 95 UV_index= sensorVoltage/0.1; 96 97 98 //condition for UV state 99 if(UV_index<=2){ 100 quality = " LOW "; 101 } 102 103 else if(UV_index > 2 && UV_index <=5){ 104 quality = " MOD "; 105 } 106 107 else if(UV_index>5 && UV_index<=7){ 108 quality = " HIGH "; 109 } 110 111 else if(UV_index>7 && UV_index<=10){ 112 quality = "VERY HIGH"; 113 114 } 115 116 else{ 117 quality = " EXTREME "; 118 } 119 120 display.clearDisplay(); 121 display.setTextColor(WHITE); 122 display.setTextSize(2); 123 display.setCursor(16, 6); 124 display.setFont(&Org_01); 125 display.println("UV INDEX"); 126 display.setCursor(53, 35); 127 display.setTextSize(1); 128 display.setFont(&FreeMonoBoldOblique12pt7b); 129 display.println(UV_index); 130 display.setTextSize(2); 131 display.setCursor(10, 55); 132 display.setFont(); 133 display.println(quality); 134 display.display(); 135 delay(1000); 136 137} 138 139void setup() { 140 Serial.begin(9600); 141 142 // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally 143 if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 144 Serial.println(F("SSD1306 allocation failed")); 145 } 146 showBitmap(); 147 display.clearDisplay(); 148 display.setTextColor(WHITE); 149 display.setTextSize(1); 150 display.setCursor(15, 9); 151 display.setFont(&FreeMonoBoldOblique12pt7b); 152 display.println("INDEX"); 153 display.setTextSize(1); 154// display.setFont(); 155 display.setCursor(55, 37); 156 display.setFont(&FreeSans9pt7b); 157 display.println("meter"); 158 display.display(); 159 delay(1000); 160} 161 162void loop() { 163 display.clearDisplay(); 164 uv_index(); 165 166} 167 168void showBitmap(void) { 169 display.clearDisplay(); 170 171 display.drawBitmap(5, 0, bitmap, bitmap_height, bitmap_width, WHITE); 172 display.display(); 173 delay(2000); 174} 175
Downloadable files
UV_meter_scm
UV_meter_scm
UV_meter_scm
UV_meter_scm
Comments
Only logged in users can leave comments