Cleaned up display code, and re-combined control code.
This commit is contained in:
		
							parent
							
								
									d041658da9
								
							
						
					
					
						commit
						d6d6007e62
					
				
							
								
								
									
										6
									
								
								build.d
								
								
								
								
							
							
						
						
									
										6
									
								
								build.d
								
								
								
								
							| 
						 | 
				
			
			@ -83,16 +83,20 @@ int flashCommand(string[] args) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
int build(bool force = false) {
 | 
			
		||||
    import std.datetime.stopwatch;
 | 
			
		||||
    if (!exists(BUILD_DIR)) mkdir(BUILD_DIR);
 | 
			
		||||
    string[] sources = findFiles(SOURCE_DIR, ".c");
 | 
			
		||||
    string[] objects;
 | 
			
		||||
    objects.reserve(sources.length);
 | 
			
		||||
    StopWatch sw = StopWatch(AutoStart.yes);
 | 
			
		||||
    foreach (source; sources) {
 | 
			
		||||
        objects ~= compileSourceToObject(source, force);
 | 
			
		||||
    }
 | 
			
		||||
    string elfFile = linkObjects(objects);
 | 
			
		||||
    string hexFile = copyToHex(elfFile);
 | 
			
		||||
    writefln!"Built %s"(hexFile);
 | 
			
		||||
    sw.stop();
 | 
			
		||||
    ulong durationMillis = sw.peek().total!"msecs";
 | 
			
		||||
    writefln!"Built %s in %d ms."(hexFile, durationMillis);
 | 
			
		||||
    runOrQuit("avr-size " ~ hexFile);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,18 +1,33 @@
 | 
			
		|||
#include "display.h"
 | 
			
		||||
 | 
			
		||||
struct st7735 lcd;
 | 
			
		||||
struct signal cs = { .ddr = &DDRB, .port = &PORTB, .pin = 2 };
 | 
			
		||||
// Back Light
 | 
			
		||||
struct signal bl = { .ddr = &DDRB, .port = &PORTB, .pin = 1 };
 | 
			
		||||
// Data / Command
 | 
			
		||||
struct signal dc = { .ddr = &DDRB, .port = &PORTB, .pin = 0 };
 | 
			
		||||
// Reset
 | 
			
		||||
struct signal rs = { .ddr = &DDRD, .port = &PORTD, .pin = 7 };
 | 
			
		||||
// LCD struct
 | 
			
		||||
struct st7735 lcd = { .cs = &cs, .bl = &bl, .dc = &dc, .rs = &rs };
 | 
			
		||||
 | 
			
		||||
void display_init() {
 | 
			
		||||
  ST7735_Init (&display_lcd);
 | 
			
		||||
  ST7735_CommandSend (&display_lcd, MADCTL);
 | 
			
		||||
  ST7735_Data8BitsSend (&display_lcd, 0x00);
 | 
			
		||||
  ST7735_ClearScreen (&display_lcd, BLACK);
 | 
			
		||||
  ST7735_SetPosition (5, 10);
 | 
			
		||||
  ST7735_DrawString (&display_lcd, "Testing", WHITE, X1);
 | 
			
		||||
  ST7735_Init(&lcd);
 | 
			
		||||
 | 
			
		||||
  // Set the display as vertical (top is the wired side).
 | 
			
		||||
  ST7735_CommandSend(&lcd, MADCTL);
 | 
			
		||||
  ST7735_Data8BitsSend(&lcd, 0x00);
 | 
			
		||||
 | 
			
		||||
  ST7735_ClearScreen(&lcd, WHITE);
 | 
			
		||||
  ST7735_SetPosition(1, 1);
 | 
			
		||||
  ST7735_DrawString(&lcd, "Gympal", BLACK, X1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct st7735* display_get_lcd() {
 | 
			
		||||
  return &lcd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void display_show_str(char* str) {
 | 
			
		||||
  ST7735_ClearScreen(&display_lcd, BLACK);
 | 
			
		||||
  ST7735_ClearScreen(&lcd, BLACK);
 | 
			
		||||
  ST7735_SetPosition(5, 10);
 | 
			
		||||
  ST7735_DrawString(&display_lcd, str, WHITE, X1);
 | 
			
		||||
  ST7735_DrawString(&lcd, str, WHITE, X1);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,27 +1,21 @@
 | 
			
		|||
/**
 | 
			
		||||
 * @file display.h
 | 
			
		||||
 * @author Andrew Lalis (andrewlalisofficial@gmail.com)
 | 
			
		||||
 * @brief A wrapper around the hardware driver for the Gympal display which
 | 
			
		||||
 * offers more abstract functions for controlling the state of the display.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef DISPLAY_H
 | 
			
		||||
#define DISPLAY_H
 | 
			
		||||
 | 
			
		||||
#include "st7735.h"
 | 
			
		||||
 | 
			
		||||
// A wrapper around the ST7735 library, which handles all of the gympal-specific display code.
 | 
			
		||||
 | 
			
		||||
// Internal IO definition needed by the st7735 library.
 | 
			
		||||
// Chip Select
 | 
			
		||||
struct signal cs = { .ddr = &DDRB, .port = &PORTB, .pin = 2 };
 | 
			
		||||
// Back Light
 | 
			
		||||
struct signal bl = { .ddr = &DDRB, .port = &PORTB, .pin = 1 };
 | 
			
		||||
// Data / Command
 | 
			
		||||
struct signal dc = { .ddr = &DDRB, .port = &PORTB, .pin = 0 };
 | 
			
		||||
// Reset
 | 
			
		||||
struct signal rs = { .ddr = &DDRD, .port = &PORTD, .pin = 7 };
 | 
			
		||||
// LCD struct
 | 
			
		||||
struct st7735 display_lcd = { .cs = &cs, .bl = &bl, .dc = &dc, .rs = &rs };
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Initializes the display.
 | 
			
		||||
 */
 | 
			
		||||
void display_init();
 | 
			
		||||
 | 
			
		||||
struct st7735* display_get_lcd();
 | 
			
		||||
 | 
			
		||||
void display_show_str(char* str);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										14
									
								
								src/gympal.c
								
								
								
								
							
							
						
						
									
										14
									
								
								src/gympal.c
								
								
								
								
							| 
						 | 
				
			
			@ -7,12 +7,12 @@
 | 
			
		|||
int main() {
 | 
			
		||||
    display_init();
 | 
			
		||||
    ctl_init();
 | 
			
		||||
    while (1) {
 | 
			
		||||
      if (ctl_isButtonAPressed()) {
 | 
			
		||||
        display_show_str("button A");
 | 
			
		||||
      } else {
 | 
			
		||||
        display_show_str("Not button A");
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // while (1) {
 | 
			
		||||
    //   if (ctl_isButtonAPressed()) {
 | 
			
		||||
    //     display_show_str("button A");
 | 
			
		||||
    //   } else {
 | 
			
		||||
    //     display_show_str("Not button A");
 | 
			
		||||
    //   }
 | 
			
		||||
    // }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue