Pull trigger on formatting
This commit is contained in:
parent
a770213f69
commit
be4b394bed
9 changed files with 286 additions and 289 deletions
14
74C922.c
14
74C922.c
|
@ -1,7 +1,7 @@
|
|||
#include "config.h"
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <stdbool.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
// Pin Definitions
|
||||
#define ENCODER_A_PIN PD6
|
||||
|
@ -20,13 +20,17 @@ void prepare_interrupt() {
|
|||
// Encoder Module
|
||||
void encoder_init() {
|
||||
// Set A, B, C, D, and DA pins as inputs
|
||||
DDRD &= ~((1 << ENCODER_A_PIN) | (1 << ENCODER_B_PIN) | (1 << ENCODER_C_PIN) | (1 << ENCODER_D_PIN) | (1 << ENCODER_DA_PIN));
|
||||
DDRD &=
|
||||
~((1 << ENCODER_A_PIN) | (1 << ENCODER_B_PIN) | (1 << ENCODER_C_PIN) |
|
||||
(1 << ENCODER_D_PIN) | (1 << ENCODER_DA_PIN));
|
||||
|
||||
// Set OE as output
|
||||
DDRD |= (1 << ENCODER_OE_PIN);
|
||||
|
||||
// Enable internal pull-up resistors for A, B, C, D, and OE pins
|
||||
PORTD |= (1 << ENCODER_A_PIN) | (1 << ENCODER_B_PIN) | (1 << ENCODER_C_PIN) | (1 << ENCODER_D_PIN) | (1 << ENCODER_DA_PIN);
|
||||
PORTD |= (1 << ENCODER_A_PIN) | (1 << ENCODER_B_PIN) |
|
||||
(1 << ENCODER_C_PIN) | (1 << ENCODER_D_PIN) |
|
||||
(1 << ENCODER_DA_PIN);
|
||||
}
|
||||
|
||||
uint8_t encoder_read() {
|
||||
|
@ -46,6 +50,4 @@ uint8_t encoder_read() {
|
|||
return encoder_data;
|
||||
}
|
||||
|
||||
bool encoder_available() {
|
||||
return (PIND & (1 << ENCODER_DA_PIN));
|
||||
}
|
||||
bool encoder_available() { return (PIND & (1 << ENCODER_DA_PIN)); }
|
28
DHT22.c
28
DHT22.c
|
@ -1,8 +1,8 @@
|
|||
#include "config.h"
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <stdbool.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
#include "GDM1602K.h"
|
||||
|
||||
|
@ -11,13 +11,10 @@
|
|||
#define PIN PINC
|
||||
#define DDR DDRC
|
||||
|
||||
bool is_high() {
|
||||
return (PIN & (1 << DATAPIN));
|
||||
}
|
||||
bool is_high() { return (PIN & (1 << DATAPIN)); }
|
||||
|
||||
// Function to read data from the DHT22 sensor
|
||||
int DHT22_Read(int *temperature, int *humidity)
|
||||
{
|
||||
int DHT22_Read(int *temperature, int *humidity) {
|
||||
// Set the data pin as output
|
||||
DDR |= (1 << DATAPIN);
|
||||
PORT |= (1 << DATAPIN); // Set the pin high, if not already pulled up
|
||||
|
@ -33,25 +30,24 @@ int DHT22_Read(int *temperature, int *humidity)
|
|||
_delay_us(20); // Wait for 40 microseconds
|
||||
|
||||
// Sensor should have pulled low here
|
||||
if(PIN & (1 << DATAPIN)) return -2;
|
||||
if (PIN & (1 << DATAPIN))
|
||||
return -2;
|
||||
|
||||
_delay_us(80); // Wait for 80 microseconds
|
||||
|
||||
// Sensor should have pulled high here
|
||||
if(!(PIN & (1 << DATAPIN))) return -1;
|
||||
if (!(PIN & (1 << DATAPIN)))
|
||||
return -1;
|
||||
|
||||
// Read data from the sensor
|
||||
uint8_t data[5] = {0, 0, 0, 0, 0};
|
||||
uint8_t bitMask = 0x80; // All zeroes with MSB high
|
||||
uint8_t byteIndex = 0;
|
||||
|
||||
for (byteIndex = 0; byteIndex < 5; byteIndex++)
|
||||
{
|
||||
for (bitMask = 0x80; bitMask != 0; bitMask >>= 1)
|
||||
{
|
||||
for (byteIndex = 0; byteIndex < 5; byteIndex++) {
|
||||
for (bitMask = 0x80; bitMask != 0; bitMask >>= 1) {
|
||||
// Wait for the data bit to go low
|
||||
while (!(PIN & (1 << PC0)))
|
||||
;
|
||||
while (!(PIN & (1 << PC0)));
|
||||
|
||||
// Wait for the data bit to go high
|
||||
_delay_us(20);
|
||||
|
@ -59,8 +55,7 @@ int DHT22_Read(int *temperature, int *humidity)
|
|||
data[byteIndex] |= bitMask;
|
||||
|
||||
// Wait for the data bit to go low (end of bit)
|
||||
while (PIN & (1 << PC0))
|
||||
;
|
||||
while (PIN & (1 << PC0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,4 +70,3 @@ int DHT22_Read(int *temperature, int *humidity)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
16
GDM1602K.c
16
GDM1602K.c
|
@ -1,8 +1,8 @@
|
|||
#include "config.h"
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <stdbool.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
#define LCD_DATA_PORT PORTB
|
||||
#define LCD_DATA_DDR DDRB
|
||||
|
@ -39,7 +39,8 @@ void lcd_send(bool rs, uint8_t data) {
|
|||
_delay_us(1);
|
||||
|
||||
// If rs (actual text data), set RS pin high
|
||||
if(rs == true) LCD_DATA_PORT |= (1 << LCD_RS_PIN);
|
||||
if (rs == true)
|
||||
LCD_DATA_PORT |= (1 << LCD_RS_PIN);
|
||||
|
||||
// Pulse enable
|
||||
_delay_ms(2);
|
||||
|
@ -78,9 +79,7 @@ void lcd_init() {
|
|||
lcd_send(0, 0b00101000);
|
||||
}
|
||||
|
||||
void lcd_clear() {
|
||||
lcd_send(0, 0x01);
|
||||
}
|
||||
void lcd_clear() { lcd_send(0, 0x01); }
|
||||
|
||||
void test_leds() {
|
||||
DDRB |= 0xFF;
|
||||
|
@ -103,13 +102,15 @@ void test_leds() {
|
|||
void lcd_set_cursor(uint8_t row, uint8_t col) {
|
||||
uint8_t position = 0x80;
|
||||
|
||||
if (row == 1) position += 0x40;
|
||||
if (row == 1)
|
||||
position += 0x40;
|
||||
|
||||
position += col;
|
||||
lcd_send(0, position);
|
||||
}
|
||||
|
||||
// Takes a string and splits it over two lines if needed. Max length is 32 characters.
|
||||
// Takes a string and splits it over two lines if needed. Max length is 32
|
||||
// characters.
|
||||
void lcd_write_string(const char *string) {
|
||||
uint8_t i = 0;
|
||||
while (string[i]) {
|
||||
|
@ -137,5 +138,4 @@ void lcd_write_strings(const char* top, const char* bottom) {
|
|||
lcd_send(1, bottom[i]);
|
||||
i++;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
14
LM335.c
14
LM335.c
|
@ -1,10 +1,9 @@
|
|||
#include "LM335.h"
|
||||
#include "config.h"
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include "LM335.h"
|
||||
|
||||
void ADC_Init()
|
||||
{
|
||||
void ADC_Init() {
|
||||
// Set AVCC as the voltage reference with external capacitor at AREF pin
|
||||
ADMUX = (1 << REFS0);
|
||||
|
||||
|
@ -15,8 +14,7 @@ void ADC_Init()
|
|||
ADCSRA |= (1 << ADEN); // | (1 << ADIE);
|
||||
}
|
||||
|
||||
uint16_t ADC_Read(uint8_t channel)
|
||||
{
|
||||
uint16_t ADC_Read(uint8_t channel) {
|
||||
// Select ADC channel
|
||||
ADMUX = (ADMUX & 0xF8) | (channel & 0x07);
|
||||
|
||||
|
@ -24,15 +22,13 @@ uint16_t ADC_Read(uint8_t channel)
|
|||
ADCSRA |= (1 << ADSC);
|
||||
|
||||
// Wait for ADC conversion to complete
|
||||
while (ADCSRA & (1 << ADSC))
|
||||
;
|
||||
while (ADCSRA & (1 << ADSC));
|
||||
|
||||
// Read ADC result
|
||||
return ADC;
|
||||
}
|
||||
|
||||
float LM335_ReadTemperature()
|
||||
{
|
||||
float LM335_ReadTemperature() {
|
||||
// Read ADC value from LM335 pin (PA0)
|
||||
uint16_t adcValue = ADC_Read(0x00);
|
||||
|
||||
|
|
17
main.c
17
main.c
|
@ -2,8 +2,8 @@
|
|||
|
||||
#include <avr/io.h>
|
||||
#include <stdbool.h>
|
||||
#include <util/delay.h>
|
||||
#include <stdio.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
#include "74C922.h"
|
||||
#include "DHT22.h"
|
||||
|
@ -46,9 +46,12 @@ int main() {
|
|||
sprintf(btn_string, "Knapp %d", button_data);
|
||||
lcd_clear();
|
||||
if (button_data == 11) {
|
||||
if(temp_unit == 'C') temp_unit = 'F';
|
||||
else if(temp_unit == 'F') temp_unit = 'K';
|
||||
else if(temp_unit == 'K') temp_unit = 'C';
|
||||
if (temp_unit == 'C')
|
||||
temp_unit = 'F';
|
||||
else if (temp_unit == 'F')
|
||||
temp_unit = 'K';
|
||||
else if (temp_unit == 'K')
|
||||
temp_unit = 'C';
|
||||
loops = 0;
|
||||
}
|
||||
if (button_data == 3) {
|
||||
|
@ -76,10 +79,12 @@ int main() {
|
|||
sprintf(temp_with_unit, "%.1f %c", celcius, temp_unit);
|
||||
break;
|
||||
case 'F':
|
||||
sprintf(temp_with_unit, "%.1f %c", celcius*9/5+32, temp_unit);
|
||||
sprintf(temp_with_unit, "%.1f %c", celcius * 9 / 5 + 32,
|
||||
temp_unit);
|
||||
break;
|
||||
case 'K':
|
||||
sprintf(temp_with_unit, "%.1f %c", celcius + 273.15, temp_unit);
|
||||
sprintf(temp_with_unit, "%.1f %c", celcius + 273.15,
|
||||
temp_unit);
|
||||
break;
|
||||
}
|
||||
sprintf(celc_str, "Temp: %s", temp_with_unit);
|
||||
|
|
Loading…
Add table
Reference in a new issue