Project Autus - Automated Plant Chamber

Dependencies:   TextLCD mbed

Fork of keypad_test by Plamen Totev

Autus

This is the codebase accompanying the project Autus.

Autus is an automated growth chamber for plants.

Features

Control Humidity inside chamber wrt to external humidity. Control Temperature inside chamber. ( Peltier Heaters/Coolers ) Water and shower plants. Control soil humidity. Monitor water tanks level (Load Cell) /media/uploads/umairaftab/frdm_-_new_page1.png

Code Base Features

Fixed timing and CRC for DHT-11 Sensor. Fixed OneWire bug for ds18b20

Cyclic Executive Scheduler with Priority. Async IPC framework for PC App over bluetooth

Fake RTC systick, I was having some trouble with the on board rtc.

/media/uploads/umairaftab/download.png

Committer:
umairaftab
Date:
Mon Apr 14 19:18:14 2014 +0000
Revision:
57:7ab93ed49b70
Parent:
37:892872c3fa96
Cosmetic Changes, Menus added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
umairaftab 3:087ce66714c0 1 #include "mbed.h"
umairaftab 3:087ce66714c0 2 #include "led_lights.h"
umairaftab 3:087ce66714c0 3 unsigned int led_red_pulsewidth;
umairaftab 3:087ce66714c0 4 unsigned int led_green_pulsewidth;
umairaftab 3:087ce66714c0 5 unsigned int led_blue_pulsewidth;
umairaftab 3:087ce66714c0 6 unsigned int led_period =1000;
umairaftab 3:087ce66714c0 7 unsigned int led_pulsewidth = 0;
umairaftab 3:087ce66714c0 8 unsigned int led_step = 10;
umairaftab 3:087ce66714c0 9
umairaftab 37:892872c3fa96 10 int MAX_RED_LIGHT = 100;
umairaftab 37:892872c3fa96 11 int MAX_BLUE_LIGHT = 100;
umairaftab 37:892872c3fa96 12 int MAX_GREEN_LIGHT = 100;
umairaftab 37:892872c3fa96 13
umairaftab 37:892872c3fa96 14 bool led_set_flag= false;
umairaftab 37:892872c3fa96 15
umairaftab 3:087ce66714c0 16 unsigned int pwm_blue_led(int brightness )
umairaftab 3:087ce66714c0 17 {
umairaftab 3:087ce66714c0 18 if (brightness==1) {
umairaftab 3:087ce66714c0 19 led_blue_pulsewidth=led_blue_pulsewidth+led_step;
umairaftab 3:087ce66714c0 20 led_blue.pulsewidth_us(led_blue_pulsewidth);
umairaftab 3:087ce66714c0 21 };
umairaftab 3:087ce66714c0 22 if (brightness==0) {
umairaftab 3:087ce66714c0 23 led_blue_pulsewidth=led_blue_pulsewidth-led_step;
umairaftab 3:087ce66714c0 24 led_blue.pulsewidth_us(led_blue_pulsewidth);
umairaftab 3:087ce66714c0 25 };
umairaftab 3:087ce66714c0 26 return led_blue_pulsewidth;
umairaftab 3:087ce66714c0 27 }
umairaftab 3:087ce66714c0 28 unsigned int pwm_green_led(int brightness)
umairaftab 3:087ce66714c0 29 {
umairaftab 3:087ce66714c0 30 if (brightness==1) {
umairaftab 3:087ce66714c0 31 led_green_pulsewidth=led_green_pulsewidth+led_step;
umairaftab 3:087ce66714c0 32 led_green.pulsewidth_us(led_green_pulsewidth);
umairaftab 3:087ce66714c0 33 }
umairaftab 3:087ce66714c0 34 if (brightness==0) {
umairaftab 3:087ce66714c0 35 led_green_pulsewidth=led_green_pulsewidth-led_step;
umairaftab 3:087ce66714c0 36 led_green.pulsewidth_us(led_green_pulsewidth);
umairaftab 3:087ce66714c0 37 }
umairaftab 3:087ce66714c0 38 return led_green_pulsewidth;
umairaftab 3:087ce66714c0 39 }
umairaftab 3:087ce66714c0 40 unsigned int pwm_red_led(int brightness)
umairaftab 3:087ce66714c0 41 {
umairaftab 3:087ce66714c0 42 if (brightness==1) {
umairaftab 3:087ce66714c0 43 led_red_pulsewidth=led_red_pulsewidth+led_step;
umairaftab 3:087ce66714c0 44 led_red.pulsewidth_us(led_red_pulsewidth);
umairaftab 3:087ce66714c0 45 }
umairaftab 3:087ce66714c0 46 if (brightness==0) {
umairaftab 3:087ce66714c0 47 led_red_pulsewidth=led_red_pulsewidth-led_step;
umairaftab 3:087ce66714c0 48 led_red.pulsewidth_us(led_red_pulsewidth);
umairaftab 3:087ce66714c0 49 }
umairaftab 3:087ce66714c0 50 return led_red_pulsewidth;
umairaftab 3:087ce66714c0 51 }
umairaftab 3:087ce66714c0 52
umairaftab 3:087ce66714c0 53 void led_test(void){
umairaftab 3:087ce66714c0 54 led_blue.period_us(led_period);
umairaftab 3:087ce66714c0 55 led_blue_pulsewidth=led_pulsewidth;
umairaftab 37:892872c3fa96 56 for (int i=1; i<=MAX_BLUE_LIGHT; i++) {
umairaftab 3:087ce66714c0 57 pwm_blue_led(1);
umairaftab 3:087ce66714c0 58 wait (0.1);
umairaftab 3:087ce66714c0 59 }
umairaftab 37:892872c3fa96 60 for (int i=1; i<=MAX_BLUE_LIGHT; i++) {
umairaftab 3:087ce66714c0 61 pwm_blue_led(0);
umairaftab 3:087ce66714c0 62 wait (0.1);
umairaftab 3:087ce66714c0 63 }
umairaftab 3:087ce66714c0 64 led_blue_pulsewidth=10; // set to 0
umairaftab 3:087ce66714c0 65 pwm_blue_led(0); // set to 0
umairaftab 3:087ce66714c0 66
umairaftab 3:087ce66714c0 67 led_red.period_us(led_period);
umairaftab 3:087ce66714c0 68 led_red_pulsewidth=led_pulsewidth;
umairaftab 37:892872c3fa96 69 for (int i=1; i<=MAX_RED_LIGHT; i++) {
umairaftab 3:087ce66714c0 70 pwm_red_led(1);
umairaftab 3:087ce66714c0 71 wait (0.1);
umairaftab 3:087ce66714c0 72 }
umairaftab 37:892872c3fa96 73 for (int i=1; i<=MAX_RED_LIGHT; i++) {
umairaftab 3:087ce66714c0 74 pwm_red_led(0);
umairaftab 3:087ce66714c0 75 wait (0.1);
umairaftab 3:087ce66714c0 76 }
umairaftab 3:087ce66714c0 77 led_red_pulsewidth=10; // set to 0
umairaftab 3:087ce66714c0 78 pwm_red_led(0); // set to 0
umairaftab 3:087ce66714c0 79
umairaftab 3:087ce66714c0 80 led_green.period_us(led_period);
umairaftab 3:087ce66714c0 81 led_green_pulsewidth=led_pulsewidth;
umairaftab 37:892872c3fa96 82 for (int i=1; i<=MAX_GREEN_LIGHT; i++) {
umairaftab 3:087ce66714c0 83 pwm_green_led(1);
umairaftab 3:087ce66714c0 84 wait (0.1);
umairaftab 3:087ce66714c0 85 }
umairaftab 37:892872c3fa96 86 for (int i=1; i<=MAX_GREEN_LIGHT; i++) {
umairaftab 3:087ce66714c0 87 pwm_green_led(0);
umairaftab 3:087ce66714c0 88 wait (0.1);
umairaftab 3:087ce66714c0 89 }
umairaftab 3:087ce66714c0 90 led_green_pulsewidth=10; // set to 0
umairaftab 3:087ce66714c0 91 pwm_green_led(0); // set to 0
umairaftab 37:892872c3fa96 92 }
umairaftab 37:892872c3fa96 93
umairaftab 37:892872c3fa96 94 void set_leds(){
umairaftab 37:892872c3fa96 95
umairaftab 37:892872c3fa96 96 //BLUE
umairaftab 37:892872c3fa96 97 led_blue.period_us(led_period);
umairaftab 37:892872c3fa96 98 led_blue_pulsewidth=led_pulsewidth;
umairaftab 37:892872c3fa96 99 for (int i=1; i<=MAX_BLUE_LIGHT; i++) {
umairaftab 37:892872c3fa96 100 pwm_blue_led(1);
umairaftab 37:892872c3fa96 101 wait (0.1);
umairaftab 37:892872c3fa96 102 }
umairaftab 37:892872c3fa96 103 //RED
umairaftab 37:892872c3fa96 104 led_red.period_us(led_period);
umairaftab 37:892872c3fa96 105 led_red_pulsewidth=led_pulsewidth;
umairaftab 37:892872c3fa96 106 for (int i=1; i<=MAX_RED_LIGHT; i++) {
umairaftab 37:892872c3fa96 107 pwm_red_led(1);
umairaftab 37:892872c3fa96 108 wait (0.1);
umairaftab 37:892872c3fa96 109 }
umairaftab 37:892872c3fa96 110 //GREEN
umairaftab 37:892872c3fa96 111 led_green.period_us(led_period);
umairaftab 37:892872c3fa96 112 led_green_pulsewidth=led_pulsewidth;
umairaftab 37:892872c3fa96 113 for (int i=1; i<=MAX_GREEN_LIGHT; i++) {
umairaftab 37:892872c3fa96 114 pwm_green_led(1);
umairaftab 37:892872c3fa96 115 wait (0.1);
umairaftab 37:892872c3fa96 116 }
umairaftab 37:892872c3fa96 117 led_set_flag = true;
umairaftab 37:892872c3fa96 118
umairaftab 37:892872c3fa96 119 }
umairaftab 37:892872c3fa96 120 void turn_off_leds(){
umairaftab 37:892872c3fa96 121
umairaftab 37:892872c3fa96 122 led_red_pulsewidth=10; // set to 0
umairaftab 37:892872c3fa96 123 pwm_red_led(0);
umairaftab 37:892872c3fa96 124 led_blue_pulsewidth=10; // set to 0
umairaftab 37:892872c3fa96 125 pwm_blue_led(0); // set to 0
umairaftab 37:892872c3fa96 126
umairaftab 37:892872c3fa96 127 led_green_pulsewidth=10; // set to 0
umairaftab 37:892872c3fa96 128 pwm_green_led(0);
umairaftab 3:087ce66714c0 129 }