* add initial support for hadron ver3 * add initial support for hadron ver3 * pull qwiic support for micro_led to be modified for use in hadron's 64x24 ssd1306 oled display * initial work on OLED using qwiic driver * early work to get 128x32 oled working by redefining qwiic micro oled parameters. Currently working, but would affect qwiic's micro oled functionality * moved oled defines to config.h and added ifndef to micro_oled driver * WORKING :D - note, still work in progress to get the start location correct on the 128x32 display. * added equation to automatically calculate display offset based on screen width * adding time-out timer to oled display * changed read lock staus via read_led_state * lock indications fixes * Added scroll lock indication to oled * add support for DRV2605 haptic driver * Improve readabiity of DRV2605 driver. -added typedef for waveform library -added unions for registers * Update keyboards/hadron/ver2/keymaps/default/config.h Co-Authored-By: ishtob <ishtob@gmail.com> * Update keyboards/hadron/ver2/keymaps/default/config.h Co-Authored-By: ishtob <ishtob@gmail.com> * Update keyboards/hadron/ver2/keymaps/default/config.h Co-Authored-By: ishtob <ishtob@gmail.com> * Update keyboards/hadron/ver2/keymaps/default/config.h Co-Authored-By: ishtob <ishtob@gmail.com> * Fixes for PR * PR fixes * fix old persistent layer function to use new set_single_persistent_default_layer * fix issues with changing makefile defines that broken per-key haptic pulse * Comment fixes * Add definable parameter and auto-calibration based on motor choice
		
			
				
	
	
		
			134 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Jim Lindblom @ SparkFun Electronics
 | |
|  * October 26, 2014
 | |
|  * https://github.com/sparkfun/Micro_OLED_Breakout/tree/master/Firmware/Arduino/libraries/SFE_MicroOLED
 | |
|  *
 | |
|  * Modified by:
 | |
|  * Emil Varughese @ Edwin Robotics Pvt. Ltd.
 | |
|  * July 27, 2015
 | |
|  * https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
 | |
|  *
 | |
|  * This code was heavily based around the MicroView library, written by GeekAmmo
 | |
|  * (https://github.com/geekammo/MicroView-Arduino-Library).
 | |
|  *
 | |
|  * Adapted for QMK by:
 | |
|  * Jack Humbert <jack.humb@gmail.com>
 | |
|  * October 11, 2018
 | |
|  *
 | |
|  * This program is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License as published by
 | |
|  * the Free Software Foundation, either version 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| #pragma once
 | |
| 
 | |
| #include "qwiic.h"
 | |
| 
 | |
| void micro_oled_init(void);
 | |
| 
 | |
| void send_command(uint8_t command);
 | |
| void send_data(uint8_t data);
 | |
| void set_page_address(uint8_t address);
 | |
| void set_column_address(uint8_t address);
 | |
| void clear_screen(void);
 | |
| void clear_buffer(void);
 | |
| void send_buffer(void);
 | |
| void draw_pixel(uint8_t x, uint8_t y, uint8_t color, uint8_t mode);
 | |
| void draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color, uint8_t mode);
 | |
| void draw_line_hori(uint8_t x, uint8_t y, uint8_t width, uint8_t color, uint8_t mode);
 | |
| void draw_line_vert(uint8_t x, uint8_t y, uint8_t height, bool color, uint8_t mode);
 | |
| void draw_rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
 | |
| void draw_rect_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
 | |
| void draw_rect_filled(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
 | |
| void draw_rect_filled_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
 | |
| void draw_char(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode, uint8_t font);
 | |
| void draw_string(uint8_t x, uint8_t y, char * string, uint8_t color, uint8_t mode, uint8_t font);
 | |
| 
 | |
| #define I2C_ADDRESS_SA0_0 0b0111100
 | |
| #ifndef I2C_ADDRESS_SA0_1
 | |
| #define I2C_ADDRESS_SA0_1 0b0111101
 | |
| #endif
 | |
| #define I2C_COMMAND 0x00
 | |
| #define I2C_DATA 0x40
 | |
| #define PIXEL_OFF 0
 | |
| #define PIXEL_ON  1
 | |
| 
 | |
| #ifndef LCDWIDTH
 | |
| #define LCDWIDTH      64
 | |
| #endif
 | |
| #ifndef LCDWIDTH
 | |
| #define LCDHEIGHT     48
 | |
| #endif
 | |
| #define FONTHEADERSIZE    6
 | |
| 
 | |
| #define NORM        0
 | |
| #define XOR         1
 | |
| 
 | |
| #define PAGE        0
 | |
| #define ALL         1
 | |
| 
 | |
| #define WIDGETSTYLE0      0
 | |
| #define WIDGETSTYLE1      1
 | |
| #define WIDGETSTYLE2      2
 | |
| 
 | |
| #define SETCONTRAST     0x81
 | |
| #define DISPLAYALLONRESUME  0xA4
 | |
| #define DISPLAYALLON    0xA5
 | |
| #define NORMALDISPLAY     0xA6
 | |
| #define INVERTDISPLAY     0xA7
 | |
| #define DISPLAYOFF      0xAE
 | |
| #define DISPLAYON       0xAF
 | |
| #define SETDISPLAYOFFSET  0xD3
 | |
| #define SETCOMPINS      0xDA
 | |
| #define SETVCOMDESELECT   0xDB
 | |
| #define SETDISPLAYCLOCKDIV  0xD5
 | |
| #define SETPRECHARGE    0xD9
 | |
| #define SETMULTIPLEX    0xA8
 | |
| #define SETLOWCOLUMN    0x00
 | |
| #define SETHIGHCOLUMN     0x10
 | |
| #define SETSTARTLINE    0x40
 | |
| #define MEMORYMODE      0x20
 | |
| #define COMSCANINC      0xC0
 | |
| #define COMSCANDEC      0xC8
 | |
| #define SEGREMAP      0xA0
 | |
| #define CHARGEPUMP      0x8D
 | |
| #define EXTERNALVCC     0x01
 | |
| #define SWITCHCAPVCC    0x02
 | |
| 
 | |
| // Scroll
 | |
| #define ACTIVATESCROLL          0x2F
 | |
| #define DEACTIVATESCROLL        0x2E
 | |
| #define SETVERTICALSCROLLAREA       0xA3
 | |
| #define RIGHTHORIZONTALSCROLL       0x26
 | |
| #define LEFT_HORIZONTALSCROLL       0x27
 | |
| #define VERTICALRIGHTHORIZONTALSCROLL 0x29
 | |
| #define VERTICALLEFTHORIZONTALSCROLL  0x2A
 | |
| 
 | |
| typedef enum CMD {
 | |
|   CMD_CLEAR,      //0
 | |
|   CMD_INVERT,     //1
 | |
|   CMD_CONTRAST,   //2
 | |
|   CMD_DISPLAY,    //3
 | |
|   CMD_SETCURSOR,    //4
 | |
|   CMD_PIXEL,      //5
 | |
|   CMD_LINE,     //6
 | |
|   CMD_LINEH,      //7
 | |
|   CMD_LINEV,      //8
 | |
|   CMD_RECT,     //9
 | |
|   CMD_RECTFILL,   //10
 | |
|   CMD_CIRCLE,     //11
 | |
|   CMD_CIRCLEFILL,   //12
 | |
|   CMD_DRAWCHAR,   //13
 | |
|   CMD_DRAWBITMAP,   //14
 | |
|   CMD_GETLCDWIDTH,  //15
 | |
|   CMD_GETLCDHEIGHT, //16
 | |
|   CMD_SETCOLOR,   //17
 | |
|   CMD_SETDRAWMODE   //18
 | |
| } commCommand_t; |