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
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus