PokittoLib with changes to lcd refresh etc.

Dependents:   Pokittris

Fork of Pokitto by Pokitto Community Team

This is a fork by user @Spinal, and is used in Pokittris for testing. Do not import this to your own program.

Committer:
spinal
Date:
Sun Oct 15 18:03:02 2017 +0000
Revision:
11:02ad9c807a21
Parent:
5:7e5c566b1760
fixed 4color refreshRegion code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pokitto 5:7e5c566b1760 1 /* mbed Microcontroller Library
Pokitto 5:7e5c566b1760 2 * Copyright (c) 2006-2013 ARM Limited
Pokitto 5:7e5c566b1760 3 *
Pokitto 5:7e5c566b1760 4 * Licensed under the Apache License, Version 2.0 (the "License");
Pokitto 5:7e5c566b1760 5 * you may not use this file except in compliance with the License.
Pokitto 5:7e5c566b1760 6 * You may obtain a copy of the License at
Pokitto 5:7e5c566b1760 7 *
Pokitto 5:7e5c566b1760 8 * http://www.apache.org/licenses/LICENSE-2.0
Pokitto 5:7e5c566b1760 9 *
Pokitto 5:7e5c566b1760 10 * Unless required by applicable law or agreed to in writing, software
Pokitto 5:7e5c566b1760 11 * distributed under the License is distributed on an "AS IS" BASIS,
Pokitto 5:7e5c566b1760 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Pokitto 5:7e5c566b1760 13 * See the License for the specific language governing permissions and
Pokitto 5:7e5c566b1760 14 * limitations under the License.
Pokitto 5:7e5c566b1760 15 */
Pokitto 5:7e5c566b1760 16 #ifndef MBED_PWMOUT_H
Pokitto 5:7e5c566b1760 17 #define MBED_PWMOUT_H
Pokitto 5:7e5c566b1760 18
Pokitto 5:7e5c566b1760 19 #include "platform.h"
Pokitto 5:7e5c566b1760 20
Pokitto 5:7e5c566b1760 21 #if DEVICE_PWMOUT
Pokitto 5:7e5c566b1760 22 #include "pwmout_api.h"
Pokitto 5:7e5c566b1760 23
Pokitto 5:7e5c566b1760 24 namespace mbed {
Pokitto 5:7e5c566b1760 25
Pokitto 5:7e5c566b1760 26 /** A pulse-width modulation digital output
Pokitto 5:7e5c566b1760 27 *
Pokitto 5:7e5c566b1760 28 * Example
Pokitto 5:7e5c566b1760 29 * @code
Pokitto 5:7e5c566b1760 30 * // Fade a led on.
Pokitto 5:7e5c566b1760 31 * #include "mbed.h"
Pokitto 5:7e5c566b1760 32 *
Pokitto 5:7e5c566b1760 33 * PwmOut led(LED1);
Pokitto 5:7e5c566b1760 34 *
Pokitto 5:7e5c566b1760 35 * int main() {
Pokitto 5:7e5c566b1760 36 * while(1) {
Pokitto 5:7e5c566b1760 37 * led = led + 0.01;
Pokitto 5:7e5c566b1760 38 * wait(0.2);
Pokitto 5:7e5c566b1760 39 * if(led == 1.0) {
Pokitto 5:7e5c566b1760 40 * led = 0;
Pokitto 5:7e5c566b1760 41 * }
Pokitto 5:7e5c566b1760 42 * }
Pokitto 5:7e5c566b1760 43 * }
Pokitto 5:7e5c566b1760 44 * @endcode
Pokitto 5:7e5c566b1760 45 *
Pokitto 5:7e5c566b1760 46 * @note
Pokitto 5:7e5c566b1760 47 * On the LPC1768 and LPC2368, the PWMs all share the same
Pokitto 5:7e5c566b1760 48 * period - if you change the period for one, you change it for all.
Pokitto 5:7e5c566b1760 49 * Although routines that change the period maintain the duty cycle
Pokitto 5:7e5c566b1760 50 * for its PWM, all other PWMs will require their duty cycle to be
Pokitto 5:7e5c566b1760 51 * refreshed.
Pokitto 5:7e5c566b1760 52 */
Pokitto 5:7e5c566b1760 53 class PwmOut {
Pokitto 5:7e5c566b1760 54
Pokitto 5:7e5c566b1760 55 public:
Pokitto 5:7e5c566b1760 56
Pokitto 5:7e5c566b1760 57 /** Create a PwmOut connected to the specified pin
Pokitto 5:7e5c566b1760 58 *
Pokitto 5:7e5c566b1760 59 * @param pin PwmOut pin to connect to
Pokitto 5:7e5c566b1760 60 */
Pokitto 5:7e5c566b1760 61 PwmOut(PinName pin) {
Pokitto 5:7e5c566b1760 62 pwmout_init(&_pwm, pin);
Pokitto 5:7e5c566b1760 63 }
Pokitto 5:7e5c566b1760 64
Pokitto 5:7e5c566b1760 65 /** Set the ouput duty-cycle, specified as a percentage (float)
Pokitto 5:7e5c566b1760 66 *
Pokitto 5:7e5c566b1760 67 * @param value A floating-point value representing the output duty-cycle,
Pokitto 5:7e5c566b1760 68 * specified as a percentage. The value should lie between
Pokitto 5:7e5c566b1760 69 * 0.0f (representing on 0%) and 1.0f (representing on 100%).
Pokitto 5:7e5c566b1760 70 * Values outside this range will be saturated to 0.0f or 1.0f.
Pokitto 5:7e5c566b1760 71 */
Pokitto 5:7e5c566b1760 72 void write(float value) {
Pokitto 5:7e5c566b1760 73 pwmout_write(&_pwm, value);
Pokitto 5:7e5c566b1760 74 }
Pokitto 5:7e5c566b1760 75
Pokitto 5:7e5c566b1760 76 /** Return the current output duty-cycle setting, measured as a percentage (float)
Pokitto 5:7e5c566b1760 77 *
Pokitto 5:7e5c566b1760 78 * @returns
Pokitto 5:7e5c566b1760 79 * A floating-point value representing the current duty-cycle being output on the pin,
Pokitto 5:7e5c566b1760 80 * measured as a percentage. The returned value will lie between
Pokitto 5:7e5c566b1760 81 * 0.0f (representing on 0%) and 1.0f (representing on 100%).
Pokitto 5:7e5c566b1760 82 *
Pokitto 5:7e5c566b1760 83 * @note
Pokitto 5:7e5c566b1760 84 * This value may not match exactly the value set by a previous <write>.
Pokitto 5:7e5c566b1760 85 */
Pokitto 5:7e5c566b1760 86 float read() {
Pokitto 5:7e5c566b1760 87 return pwmout_read(&_pwm);
Pokitto 5:7e5c566b1760 88 }
Pokitto 5:7e5c566b1760 89
Pokitto 5:7e5c566b1760 90 /** Set the PWM period, specified in seconds (float), keeping the duty cycle the same.
Pokitto 5:7e5c566b1760 91 *
Pokitto 5:7e5c566b1760 92 * @note
Pokitto 5:7e5c566b1760 93 * The resolution is currently in microseconds; periods smaller than this
Pokitto 5:7e5c566b1760 94 * will be set to zero.
Pokitto 5:7e5c566b1760 95 */
Pokitto 5:7e5c566b1760 96 void period(float seconds) {
Pokitto 5:7e5c566b1760 97 pwmout_period(&_pwm, seconds);
Pokitto 5:7e5c566b1760 98 }
Pokitto 5:7e5c566b1760 99
Pokitto 5:7e5c566b1760 100 /** Set the PWM period, specified in milli-seconds (int), keeping the duty cycle the same.
Pokitto 5:7e5c566b1760 101 */
Pokitto 5:7e5c566b1760 102 void period_ms(int ms) {
Pokitto 5:7e5c566b1760 103 pwmout_period_ms(&_pwm, ms);
Pokitto 5:7e5c566b1760 104 }
Pokitto 5:7e5c566b1760 105
Pokitto 5:7e5c566b1760 106 /** Set the PWM period, specified in micro-seconds (int), keeping the duty cycle the same.
Pokitto 5:7e5c566b1760 107 */
Pokitto 5:7e5c566b1760 108 void period_us(int us) {
Pokitto 5:7e5c566b1760 109 pwmout_period_us(&_pwm, us);
Pokitto 5:7e5c566b1760 110 }
Pokitto 5:7e5c566b1760 111
Pokitto 5:7e5c566b1760 112 /** Set the PWM pulsewidth, specified in seconds (float), keeping the period the same.
Pokitto 5:7e5c566b1760 113 */
Pokitto 5:7e5c566b1760 114 void pulsewidth(float seconds) {
Pokitto 5:7e5c566b1760 115 pwmout_pulsewidth(&_pwm, seconds);
Pokitto 5:7e5c566b1760 116 }
Pokitto 5:7e5c566b1760 117
Pokitto 5:7e5c566b1760 118 /** Set the PWM pulsewidth, specified in milli-seconds (int), keeping the period the same.
Pokitto 5:7e5c566b1760 119 */
Pokitto 5:7e5c566b1760 120 void pulsewidth_ms(int ms) {
Pokitto 5:7e5c566b1760 121 pwmout_pulsewidth_ms(&_pwm, ms);
Pokitto 5:7e5c566b1760 122 }
Pokitto 5:7e5c566b1760 123
Pokitto 5:7e5c566b1760 124 /** Set the PWM pulsewidth, specified in micro-seconds (int), keeping the period the same.
Pokitto 5:7e5c566b1760 125 */
Pokitto 5:7e5c566b1760 126 void pulsewidth_us(int us) {
Pokitto 5:7e5c566b1760 127 pwmout_pulsewidth_us(&_pwm, us);
Pokitto 5:7e5c566b1760 128 }
Pokitto 5:7e5c566b1760 129
Pokitto 5:7e5c566b1760 130 #ifdef MBED_OPERATORS
Pokitto 5:7e5c566b1760 131 /** A operator shorthand for write()
Pokitto 5:7e5c566b1760 132 */
Pokitto 5:7e5c566b1760 133 PwmOut& operator= (float value) {
Pokitto 5:7e5c566b1760 134 write(value);
Pokitto 5:7e5c566b1760 135 return *this;
Pokitto 5:7e5c566b1760 136 }
Pokitto 5:7e5c566b1760 137
Pokitto 5:7e5c566b1760 138 PwmOut& operator= (PwmOut& rhs) {
Pokitto 5:7e5c566b1760 139 write(rhs.read());
Pokitto 5:7e5c566b1760 140 return *this;
Pokitto 5:7e5c566b1760 141 }
Pokitto 5:7e5c566b1760 142
Pokitto 5:7e5c566b1760 143 /** An operator shorthand for read()
Pokitto 5:7e5c566b1760 144 */
Pokitto 5:7e5c566b1760 145 operator float() {
Pokitto 5:7e5c566b1760 146 return read();
Pokitto 5:7e5c566b1760 147 }
Pokitto 5:7e5c566b1760 148 #endif
Pokitto 5:7e5c566b1760 149
Pokitto 5:7e5c566b1760 150 protected:
Pokitto 5:7e5c566b1760 151 pwmout_t _pwm;
Pokitto 5:7e5c566b1760 152 };
Pokitto 5:7e5c566b1760 153
Pokitto 5:7e5c566b1760 154 } // namespace mbed
Pokitto 5:7e5c566b1760 155
Pokitto 5:7e5c566b1760 156 #endif
Pokitto 5:7e5c566b1760 157
Pokitto 5:7e5c566b1760 158 #endif