Support vibration motor for TentaPad
This commit is contained in:
parent
f5933c130a
commit
0f406d8d05
@ -53,7 +53,8 @@ SRC = keymap_common.c \
|
||||
matrix.c \
|
||||
led.c \
|
||||
backlight.c \
|
||||
ledmap.c
|
||||
ledmap.c \
|
||||
vibration.c
|
||||
|
||||
ifdef KEYMAP
|
||||
SRC := keymap_$(KEYMAP).c $(SRC)
|
||||
|
@ -49,10 +49,12 @@ TARGET_DIR = .
|
||||
|
||||
# project specific files
|
||||
SRC = keymap_common.c \
|
||||
tentapad.c \
|
||||
matrix.c \
|
||||
led.c \
|
||||
backlight.c \
|
||||
ledmap.c
|
||||
ledmap.c \
|
||||
vibration.c
|
||||
|
||||
ifdef KEYMAP
|
||||
SRC := keymap_$(KEYMAP).c $(SRC)
|
||||
|
@ -30,6 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#ifdef PS2_MOUSE_ENABLE
|
||||
#include "ps2.h"
|
||||
#endif
|
||||
#include "vibration.h"
|
||||
#include "keymap_common.h"
|
||||
|
||||
|
||||
@ -80,6 +81,8 @@ void matrix_init(void)
|
||||
|
||||
keymaps_cache_init();
|
||||
|
||||
vibration_init();
|
||||
|
||||
// initialize cols
|
||||
init_cols();
|
||||
}
|
||||
@ -126,6 +129,8 @@ uint8_t matrix_scan(void)
|
||||
}
|
||||
*/
|
||||
|
||||
vibration_task();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "softpwm_led.h"
|
||||
#include "eeconfig.h"
|
||||
#include "keymap_common.h"
|
||||
#include "vibration.h"
|
||||
#include "tentapad.h"
|
||||
#include "debug.h"
|
||||
|
||||
@ -87,6 +88,7 @@ void action_keyevent(keyevent_t event)
|
||||
break;
|
||||
case KEY_TT:
|
||||
if (event.pressed) {
|
||||
vibration(64);
|
||||
switch (backlight_mode) {
|
||||
case 1: case 2:
|
||||
softpwm_led_increase(LED_KEY_SIDE - 1 + backlight_mode, 32);
|
||||
|
71
keyboard/tentapad/vibration.c
Normal file
71
keyboard/tentapad/vibration.c
Normal file
@ -0,0 +1,71 @@
|
||||
/*
|
||||
Copyright 2014 Kai Ryu <kai1103@gmail.com>
|
||||
|
||||
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 2 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/>.
|
||||
*/
|
||||
|
||||
#include <avr/io.h>
|
||||
#include "timer.h"
|
||||
#include "vibration.h"
|
||||
|
||||
static uint8_t vibration_state = 0;
|
||||
static uint16_t vibration_start;
|
||||
static uint16_t vibration_duration;
|
||||
|
||||
void vibration_task(void)
|
||||
{
|
||||
if (vibration_state) {
|
||||
if (timer_elapsed(vibration_start) > vibration_duration) {
|
||||
vibration_state = 0;
|
||||
vibration_disable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void vibration_init(void)
|
||||
{
|
||||
#ifndef EXPERIMENTAL
|
||||
DDRD |= (1<<PD6);
|
||||
PORTD &= ~(1<<PD6);
|
||||
#else
|
||||
DDRD |= (1<<PD5);
|
||||
PORTD &= ~(1<<PD5);
|
||||
#endif
|
||||
}
|
||||
|
||||
void vibration_enable(void)
|
||||
{
|
||||
#ifndef EXPERIMENTAL
|
||||
PORTD |= (1<<PD6);
|
||||
#else
|
||||
PORTD |= (1<<PD5);
|
||||
#endif
|
||||
}
|
||||
|
||||
void vibration_disable(void)
|
||||
{
|
||||
#ifndef EXPERIMENTAL
|
||||
PORTD &= ~(1<<PD6);
|
||||
#else
|
||||
PORTD &= ~(1<<PD5);
|
||||
#endif
|
||||
}
|
||||
|
||||
void vibration(uint16_t duration)
|
||||
{
|
||||
vibration_state = 1;
|
||||
vibration_start = timer_read();
|
||||
vibration_duration = duration;
|
||||
vibration_enable();
|
||||
}
|
24
keyboard/tentapad/vibration.h
Normal file
24
keyboard/tentapad/vibration.h
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
Copyright 2014 Kai Ryu <kai1103@gmail.com>
|
||||
|
||||
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 2 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/>.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
void vibration_init(void);
|
||||
void vibration_task(void);
|
||||
void vibration_enable(void);
|
||||
void vibration_disable(void);
|
||||
void vibration(uint16_t duration);
|
Reference in New Issue
Block a user