diff options
Diffstat (limited to 'core')
36 files changed, 0 insertions, 3802 deletions
diff --git a/core/libraries/EEPROM/EEPROM.cpp b/core/libraries/EEPROM/EEPROM.cpp deleted file mode 100755 index 3a361e7..0000000 --- a/core/libraries/EEPROM/EEPROM.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - EEPROM.cpp - EEPROM library - Copyright (c) 2006 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/****************************************************************************** - * Includes - ******************************************************************************/ - -#include <avr/eeprom.h> -#include "WConstants.h" -#include "EEPROM.h" - -/****************************************************************************** - * Definitions - ******************************************************************************/ - -/****************************************************************************** - * Constructors - ******************************************************************************/ - -/****************************************************************************** - * User API - ******************************************************************************/ - -uint8_t EEPROMClass::read(int address) -{ - return eeprom_read_byte((unsigned char *) address); -} - -void EEPROMClass::write(int address, uint8_t value) -{ - eeprom_write_byte((unsigned char *) address, value); -} - -EEPROMClass EEPROM; diff --git a/core/libraries/EEPROM/EEPROM.h b/core/libraries/EEPROM/EEPROM.h deleted file mode 100755 index aa2b577..0000000 --- a/core/libraries/EEPROM/EEPROM.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - EEPROM.h - EEPROM library - Copyright (c) 2006 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef EEPROM_h -#define EEPROM_h - -#include <inttypes.h> - -class EEPROMClass -{ - public: - uint8_t read(int); - void write(int, uint8_t); -}; - -extern EEPROMClass EEPROM; - -#endif - diff --git a/core/libraries/EEPROM/examples/eeprom_clear/eeprom_clear.pde b/core/libraries/EEPROM/examples/eeprom_clear/eeprom_clear.pde deleted file mode 100644 index 36af68e..0000000 --- a/core/libraries/EEPROM/examples/eeprom_clear/eeprom_clear.pde +++ /dev/null @@ -1,21 +0,0 @@ -/* - * EEPROM Clear - * - * Sets all of the bytes of the EEPROM to 0. - */ - -#include <EEPROM.h> - -void setup() -{ - // write a 0 to all 512 bytes of the EEPROM - for (int i = 0; i < 512; i++) - EEPROM.write(i, 0); - - // turn the LED on when we're done - digitalWrite(13, HIGH); -} - -void loop() -{ -} diff --git a/core/libraries/EEPROM/examples/eeprom_read/eeprom_read.pde b/core/libraries/EEPROM/examples/eeprom_read/eeprom_read.pde deleted file mode 100644 index 2e30708..0000000 --- a/core/libraries/EEPROM/examples/eeprom_read/eeprom_read.pde +++ /dev/null @@ -1,38 +0,0 @@ -/* - * EEPROM Read - * - * Reads the value of each byte of the EEPROM and prints it - * to the computer. - */ - -#include <EEPROM.h> - -// start reading from the first byte (address 0) of the EEPROM -int address = 0; -byte value; - -void setup() -{ - Serial.begin(9600); -} - -void loop() -{ - // read a byte from the current address of the EEPROM - value = EEPROM.read(address); - - Serial.print(address); - Serial.print("\t"); - Serial.print(value, DEC); - Serial.println(); - - // advance to the next address of the EEPROM - address = address + 1; - - // there are only 512 bytes of EEPROM, from 0 to 511, so if we're - // on address 512, wrap around to address 0 - if (address == 512) - address = 0; - - delay(500); -} diff --git a/core/libraries/EEPROM/examples/eeprom_write/eeprom_write.pde b/core/libraries/EEPROM/examples/eeprom_write/eeprom_write.pde deleted file mode 100644 index ae7c57e..0000000 --- a/core/libraries/EEPROM/examples/eeprom_write/eeprom_write.pde +++ /dev/null @@ -1,38 +0,0 @@ -/* - * EEPROM Write - * - * Stores values read from analog input 0 into the EEPROM. - * These values will stay in the EEPROM when the board is - * turned off and may be retrieved later by another sketch. - */ - -#include <EEPROM.h> - -// the current address in the EEPROM (i.e. which byte -// we're going to write to next) -int addr = 0; - -void setup() -{ -} - -void loop() -{ - // need to divide by 4 because analog inputs range from - // 0 to 1023 and each byte of the EEPROM can only hold a - // value from 0 to 255. - int val = analogRead(0) / 4; - - // write the value to the appropriate byte of the EEPROM. - // these values will remain there when the board is - // turned off. - EEPROM.write(addr, val); - - // advance to the next address. there are 512 bytes in - // the EEPROM, so go back to 0 when we hit 512. - addr = addr + 1; - if (addr == 512) - addr = 0; - - delay(100); -} diff --git a/core/libraries/EEPROM/keywords.txt b/core/libraries/EEPROM/keywords.txt deleted file mode 100644 index d3218fe..0000000 --- a/core/libraries/EEPROM/keywords.txt +++ /dev/null @@ -1,18 +0,0 @@ -####################################### -# Syntax Coloring Map For Ultrasound -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -EEPROM KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/core/libraries/Firmata/Firmata.cpp b/core/libraries/Firmata/Firmata.cpp deleted file mode 100644 index de58a41..0000000 --- a/core/libraries/Firmata/Firmata.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/* - Firmata.cpp - Firmata library - Copyright (c) 2007 Free Software Foundation. All right reserved. - Written by Hans-Christoph Steiner <hans@at.or.at> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//****************************************************************************** -//* Includes -//****************************************************************************** - -extern "C" { - // AVR LibC Includes - #include <inttypes.h> - #include <stdlib.h> - - // Wiring Core Includes - #include "WConstants.h" -} - -#include "Firmata.h" -#include "EEPROM.h" -#include "HardwareSerial.h" - -//****************************************************************************** -//* Definitions -//****************************************************************************** - -//****************************************************************************** -//* Constructors -//****************************************************************************** - -FirmataClass::FirmataClass() -{ - // TODO: init serial here - // TODO: printVersion -} - -//****************************************************************************** -//* Private Methods -//****************************************************************************** -// resets the system state upon a SYSTEM_RESET message from the host software -void FirmataClass::systemReset(void) -{ - // TODO automatically call this in response to SYSTEM_RESET - // TODO reset EEPROM to 0 here -} - -//****************************************************************************** -//* Public Methods -//****************************************************************************** - -// output type of message that is next on the queue -int FirmataClass::available(void) -{ - // TODO output next available message type, or -1 if nothing -} - - -// output the protocol version message to the serial port -void FirmataClass::printVersion() { - Serial.print(REPORT_VERSION, BYTE); - Serial.print(FIRMATA_MINOR_VERSION, BYTE); - Serial.print(FIRMATA_MAJOR_VERSION, BYTE); -} - -// send an analog message -void FirmataClass::sendAnalog(int pin, int value) -{ - // pin can only be 0-15, so chop higher bits - Serial.print(ANALOG_MESSAGE | (pin & 0xF), BYTE); - Serial.print(value % 128, BYTE); - Serial.print(value >> 7, BYTE); -} - -// send a single digital pin in a digital message -void FirmataClass::sendDigital(int pin, int value) -{ - // TODO add single pin digital messages to the protocol -} - -// send 14-bits in a single digital message -void FirmataClass::sendDigitalPortPair(int port, int value) -{ - // TODO: the digital message should not be sent on the serial port every - // time sendDigital() is called. Instead, it should add it to an int - // which will be sent on a schedule. If a pin changes more than once - // before the digital message is sent on the serial port, it should send a - // digital message for each change. - - // TODO: some math needs to happen for pin > 14 since MIDI channels are used - Serial.print(DIGITAL_MESSAGE | (port & 0xF),BYTE); - Serial.print(value % 128, BYTE); // Tx pins 0-6 - Serial.print(value >> 7, BYTE); // Tx pins 7-13 -} - -// Internal Actions///////////////////////////////////////////////////////////// - -void FirmataClass::loadState(void) -{ - // TODO load state from EEPROM -} - -void FirmataClass::saveState(void) -{ - // TODO save state to EEPROM -} - -void FirmataClass::resetState(void) -{ - // TODO reset state bytes in EEPROM -} - -// make one instance for the user to use -FirmataClass Firmata; diff --git a/core/libraries/Firmata/Firmata.h b/core/libraries/Firmata/Firmata.h deleted file mode 100644 index 1c6604b..0000000 --- a/core/libraries/Firmata/Firmata.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - Firmata.h - Firmata library - Copyright (c) 2007 Free Software Foundation. All right reserved. - Written by Hans-Christoph Steiner <hans@at.or.at> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Firmata_h -#define Firmata_h - -#include <inttypes.h> - -class FirmataClass -{ -private: - void systemReset(void); -public: - FirmataClass(); - int available(void); - // serial receive actions - // send serial messages - void printVersion(void); - void sendAnalog(int, int); - void sendDigital(int, int); - void sendDigitalPortPair(int, int); - // internal actions - void loadState(void); - void saveState(void); - void resetState(void); -}; - -extern FirmataClass Firmata; - -/*============================================================================== - * MACROS - *============================================================================*/ - -/* Version numbers for the protocol. The protocol is still changing, so these - * version numbers are important. This number can be queried so that host - * software can test whether it will be compatible with the currently - * installed firmware. */ -#define FIRMATA_MAJOR_VERSION 1 // for non-compatible changes -#define FIRMATA_MINOR_VERSION 0 // for backwards compatible changes - -// total number of pins currently supported -#define TOTAL_ANALOG_PINS 6 -#define TOTAL_DIGITAL_PINS 14 - -// for comparing along with INPUT and OUTPUT -#define PWM 2 - -// for selecting digital inputs -#define PB 2 // digital input, pins 8-13 -#define PC 3 // analog input port -#define PD 4 // digital input, pins 0-7 - -#define MAX_DATA_BYTES 2 // max number of data bytes in non-SysEx messages -// message command bytes -#define DIGITAL_MESSAGE 0x90 // send data for a digital pin -#define ANALOG_MESSAGE 0xE0 // send data for an analog pin (or PWM) -//#define PULSE_MESSAGE 0xA0 // proposed pulseIn/Out message (SysEx) -//#define SHIFTOUT_MESSAGE 0xB0 // proposed shiftOut message (SysEx) -#define REPORT_ANALOG_PIN 0xC0 // enable analog input by pin # -#define REPORT_DIGITAL_PORTS 0xD0 // enable digital input by port pair -#define START_SYSEX 0xF0 // start a MIDI SysEx message -#define SET_DIGITAL_PIN_MODE 0xF4 // set a digital pin to INPUT or OUTPUT -#define END_SYSEX 0xF7 // end a MIDI SysEx message -#define REPORT_VERSION 0xF9 // report firmware version -#define SYSTEM_RESET 0xFF // reset from MIDI - -// these are used for EEPROM reading and writing -#define ANALOGINPUTSTOREPORT_LOW_BYTE 0x1F0 // analogInputsToReport is an int -#define ANALOGINPUTSTOREPORT_HIGH_BYTE 0x1F1 // analogInputsToReport is an int -#define REPORTDIGITALINPUTS_BYTE 0x1F2 // -#define DIGITALPINSTATUS_LOW_BYTE 0x1F3 // digitalPinStatus is an int -#define DIGITALPINSTATUS_HIGH_BYTE 0x1F4 // digitalPinStatus is an int -#define PWMSTATUS_LOW_BYTE 0x1F5 // pwmStatus is an int -#define PWMSTATUS_HIGH_BYTE 0x1F6 // pwmStatus is an int - - -#endif /* Firmata_h */ - diff --git a/core/libraries/Firmata/keywords.txt b/core/libraries/Firmata/keywords.txt deleted file mode 100644 index a241593..0000000 --- a/core/libraries/Firmata/keywords.txt +++ /dev/null @@ -1,18 +0,0 @@ -####################################### -# Syntax Coloring Map For Firmata -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Firmata KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/core/libraries/Matrix/Matrix.cpp b/core/libraries/Matrix/Matrix.cpp deleted file mode 100755 index c86c4c9..0000000 --- a/core/libraries/Matrix/Matrix.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/* - Matrix.cpp - Max7219 LED Matrix library for Arduino & Wiring - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -// TODO: Support segment displays in api? -// TODO: Support varying vendor layouts? - -/****************************************************************************** - * Includes - ******************************************************************************/ - -extern "C" { - // AVR LibC Includes - #include <inttypes.h> - #include <stdlib.h> - - // Wiring Core Includes - #undef abs - #include "WConstants.h" - - // Wiring Core Prototypes - //void pinMode(uint8_t, uint8_t); - //void digitalWrite(int, uint8_t); -} - -#include "Sprite.h" -#include "Matrix.h" - -/****************************************************************************** - * Definitions - ******************************************************************************/ - -// Matrix registers -#define REG_NOOP 0x00 -#define REG_DIGIT0 0x01 -#define REG_DIGIT1 0x02 -#define REG_DIGIT2 0x03 -#define REG_DIGIT3 0x04 -#define REG_DIGIT4 0x05 -#define REG_DIGIT5 0x06 -#define REG_DIGIT6 0x07 -#define REG_DIGIT7 0x08 -#define REG_DECODEMODE 0x09 -#define REG_INTENSITY 0x0A -#define REG_SCANLIMIT 0x0B -#define REG_SHUTDOWN 0x0C -#define REG_DISPLAYTEST 0x0F - -/****************************************************************************** - * Constructors - ******************************************************************************/ - -Matrix::Matrix(uint8_t data, uint8_t clock, uint8_t load, uint8_t screens /* = 1 */) -{ - // record pins for sw spi - _pinData = data; - _pinClock = clock; - _pinLoad = load; - - // set ddr for sw spi pins - pinMode(_pinClock, OUTPUT); - pinMode(_pinData, OUTPUT); - pinMode(_pinLoad, OUTPUT); - - // allocate screenbuffers - _screens = screens; - _buffer = (uint8_t*)calloc(_screens, 64); - _maximumX = (_screens * 8); - - // initialize registers - clear(); // clear display - setScanLimit(0x07); // use all rows/digits - setBrightness(0x0F); // maximum brightness - setRegister(REG_SHUTDOWN, 0x01); // normal operation - setRegister(REG_DECODEMODE, 0x00); // pixels not integers - setRegister(REG_DISPLAYTEST, 0x00); // not in test mode -} - -/****************************************************************************** - * MAX7219 SPI - ******************************************************************************/ - -// sends a single byte by sw spi (no latching) -void Matrix::putByte(uint8_t data) -{ - uint8_t i = 8; - uint8_t mask; - while(i > 0) { - mask = 0x01 << (i - 1); // get bitmask - digitalWrite(_pinClock, LOW); // tick - if (data & mask){ // choose bit - digitalWrite(_pinData, HIGH); // set 1 - }else{ - digitalWrite(_pinData, LOW); // set 0 - } - digitalWrite(_pinClock, HIGH); // tock - --i; // move to lesser bit - } -} - -// sets register to a byte value for all screens -void Matrix::setRegister(uint8_t reg, uint8_t data) -{ - digitalWrite(_pinLoad, HIGH); // begin - for(uint8_t i = 0; i < _screens; ++i){ - putByte(reg); // specify register - putByte(data); // send data - } - digitalWrite(_pinLoad, LOW); // latch in data - digitalWrite(_pinLoad, HIGH); // end -} - -// syncs row of display with buffer -void Matrix::syncRow(uint8_t row) -{ - if (!_buffer) return; - - // uint8_t's can't be negative, so don't test for negative row - if (row >= 8) return; - digitalWrite(_pinLoad, HIGH); // begin - for(uint8_t i = 0; i < _screens; ++i){ - putByte(8 - row); // specify register - putByte(_buffer[row + (8 * i)]); // send data - } - digitalWrite(_pinLoad, LOW); // latch in data - digitalWrite(_pinLoad, HIGH); // end -} - -/****************************************************************************** - * MAX7219 Configuration - ******************************************************************************/ - -// sets how many digits are displayed -void Matrix::setScanLimit(uint8_t value) -{ - setRegister(REG_SCANLIMIT, value & 0x07); -} - -// sets brightness of the display -void Matrix::setBrightness(uint8_t value) -{ - setRegister(REG_INTENSITY, value & 0x0F); -} - -/****************************************************************************** - * Helper Functions - ******************************************************************************/ - -void Matrix::buffer(uint8_t x, uint8_t y, uint8_t value) -{ - if (!_buffer) return; - - // uint8_t's can't be negative, so don't test for negative x and y. - if (x >= _maximumX || y >= 8) return; - - uint8_t offset = x; // record x - x %= 8; // make x relative to a single matrix - offset -= x; // calculate buffer offset - - // wrap shift relative x for nexus module layout - if (x == 0){ - x = 8; - } - --x; - - // record value in buffer - if(value){ - _buffer[y + offset] |= 0x01 << x; - }else{ - _buffer[y + offset] &= ~(0x01 << x); - } -} - -/****************************************************************************** - * User API - ******************************************************************************/ - -// buffers and writes to screen -void Matrix::write(uint8_t x, uint8_t y, uint8_t value) -{ - buffer(x, y, value); - - // update affected row - syncRow(y); -} - -void Matrix::write(uint8_t x, uint8_t y, Sprite sprite) -{ - for (uint8_t i = 0; i < sprite.height(); i++){ - for (uint8_t j = 0; j < sprite.width(); j++) - buffer(x + j, y + i, sprite.read(j, i)); - - syncRow(y + i); - } -} - -// clears screens and buffers -void Matrix::clear(void) -{ - if (!_buffer) return; - - // clear buffer - for(uint8_t i = 0; i < 8; ++i){ - for(uint8_t j = 0; j < _screens; ++j){ - _buffer[i + (8 * j)] = 0x00; - } - } - - // clear registers - for(uint8_t i = 0; i < 8; ++i){ - syncRow(i); - } -} - diff --git a/core/libraries/Matrix/Matrix.h b/core/libraries/Matrix/Matrix.h deleted file mode 100755 index 7c6be91..0000000 --- a/core/libraries/Matrix/Matrix.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - Matrix.h - Max7219 LED Matrix library for Arduino & Wiring - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Matrix_h -#define Matrix_h - -#include <inttypes.h> - -class Sprite; - -class Matrix -{ - private: - uint8_t _pinData; - uint8_t _pinClock; - uint8_t _pinLoad; - - uint8_t* _buffer; - uint8_t _screens; - uint8_t _maximumX; - - void putByte(uint8_t); - void setRegister(uint8_t, uint8_t); - void syncRow(uint8_t); - - void setScanLimit(uint8_t); - - void buffer(uint8_t, uint8_t, uint8_t); - public: - Matrix(uint8_t, uint8_t, uint8_t, uint8_t = 1); - void setBrightness(uint8_t); - void write(uint8_t, uint8_t, uint8_t); - void write(uint8_t, uint8_t, Sprite); - void clear(void); -}; - -#endif - diff --git a/core/libraries/Matrix/examples/hello_matrix/hello_matrix.pde b/core/libraries/Matrix/examples/hello_matrix/hello_matrix.pde deleted file mode 100644 index b8e1971..0000000 --- a/core/libraries/Matrix/examples/hello_matrix/hello_matrix.pde +++ /dev/null @@ -1,39 +0,0 @@ -// Hello Matrix -// by Nicholas Zambetti <http://www.zambetti.com> - -// Demonstrates the use of the Matrix library -// For MAX7219 LED Matrix Controllers -// Blinks welcoming face on screen - -// Created 13 February 2006 - -/* create a new Matrix instance - pin 0: data (din) - pin 1: load (load) - pin 2: clock (clk) -*/ -Matrix myMatrix = Matrix(0, 2, 1); - -void setup() -{ -} - -void loop() -{ - myMatrix.clear(); // clear display - - delay(1000); - - // turn some pixels on - myMatrix.write(1, 5, HIGH); - myMatrix.write(2, 2, HIGH); - myMatrix.write(2, 6, HIGH); - myMatrix.write(3, 6, HIGH); - myMatrix.write(4, 6, HIGH); - myMatrix.write(5, 2, HIGH); - myMatrix.write(5, 6, HIGH); - myMatrix.write(6, 5, HIGH); - - delay(1000); -} - diff --git a/core/libraries/Matrix/examples/sprite_animation/sprite_animation.pde b/core/libraries/Matrix/examples/sprite_animation/sprite_animation.pde deleted file mode 100644 index f6099fc..0000000 --- a/core/libraries/Matrix/examples/sprite_animation/sprite_animation.pde +++ /dev/null @@ -1,45 +0,0 @@ -// Sprite Animation -// by Nicholas Zambetti <http://www.zambetti.com> - -// Demonstrates the use of the Matrix & Sprite libraries -// Displays animated waveform graphic on screen - -// Created 29 March 2006 - -/* create a new Matrix instance - pin 0: data (din) - pin 1: load (load) - pin 2: clock (clk) -*/ -Matrix myMatrix = Matrix(0, 2, 1); - -/* create a new Sprite instance - 8 pixels wide, 4 pixels tall -*/ -Sprite wave = Sprite( - 8, 4, - B00011000, - B00100100, - B01000010, - B10000001 -); - -void setup() -{ -} - -int x = 0; - -void loop() -{ - myMatrix.write(x, 2, wave); // place sprite on screen - myMatrix.write(x - 8, 2, wave); // place sprite again, elsewhere on screen - delay(75); // wait a little bit - myMatrix.clear(); // clear the screen for next animation frame - if(x == 8) // if reached end of animation sequence - { - x = 0; // start from beginning - } - x++; // advance x coordinate to the right -} - diff --git a/core/libraries/Matrix/keywords.txt b/core/libraries/Matrix/keywords.txt deleted file mode 100644 index b784f87..0000000 --- a/core/libraries/Matrix/keywords.txt +++ /dev/null @@ -1,22 +0,0 @@ -####################################### -# Syntax Coloring Map For Matrix -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Matrix KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -setBrightness KEYWORD2 -write KEYWORD2 -clear KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/core/libraries/SoftwareSerial/SoftwareSerial.cpp b/core/libraries/SoftwareSerial/SoftwareSerial.cpp deleted file mode 100755 index 6df04d2..0000000 --- a/core/libraries/SoftwareSerial/SoftwareSerial.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/* - SoftwareSerial.cpp - Software serial library - Copyright (c) 2006 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/****************************************************************************** - * Includes - ******************************************************************************/ - -#include "WConstants.h" -#include "SoftwareSerial.h" - -/****************************************************************************** - * Definitions - ******************************************************************************/ - -/****************************************************************************** - * Constructors - ******************************************************************************/ - -SoftwareSerial::SoftwareSerial(uint8_t receivePin, uint8_t transmitPin) -{ - _receivePin = receivePin; - _transmitPin = transmitPin; - _baudRate = 0; -} - -/****************************************************************************** - * User API - ******************************************************************************/ - -void SoftwareSerial::begin(long speed) -{ - _baudRate = speed; - _bitPeriod = 1000000 / _baudRate; - - digitalWrite(_transmitPin, HIGH); - delayMicroseconds( _bitPeriod); // if we were low this establishes the end -} - -int SoftwareSerial::read() -{ - int val = 0; - int bitDelay = _bitPeriod - clockCyclesToMicroseconds(50); - - // one byte of serial data (LSB first) - // ...--\ /--\/--\/--\/--\/--\/--\/--\/--\/--... - // \--/\--/\--/\--/\--/\--/\--/\--/\--/ - // start 0 1 2 3 4 5 6 7 stop - - while (digitalRead(_receivePin)); - - // confirm that this is a real start bit, not line noise - if (digitalRead(_receivePin) == LOW) { - // frame start indicated by a falling edge and low start bit - // jump to the middle of the low start bit - delayMicroseconds(bitDelay / 2 - clockCyclesToMicroseconds(50)); - - // offset of the bit in the byte: from 0 (LSB) to 7 (MSB) - for (int offset = 0; offset < 8; offset++) { - // jump to middle of next bit - delayMicroseconds(bitDelay); - - // read bit - val |= digitalRead(_receivePin) << offset; - } - - delayMicroseconds(_bitPeriod); - - return val; - } - - return -1; -} - -void SoftwareSerial::print(uint8_t b) -{ - if (_baudRate == 0) - return; - - int bitDelay = _bitPeriod - clockCyclesToMicroseconds(50); // a digitalWrite is about 50 cycles - byte mask; - - digitalWrite(_transmitPin, LOW); - delayMicroseconds(bitDelay); - - for (mask = 0x01; mask; mask <<= 1) { - if (b & mask){ // choose bit - digitalWrite(_transmitPin,HIGH); // send 1 - } - else{ - digitalWrite(_transmitPin,LOW); // send 1 - } - delayMicroseconds(bitDelay); - } - - digitalWrite(_transmitPin, HIGH); - delayMicroseconds(bitDelay); -} - -void SoftwareSerial::print(const char *s) -{ - while (*s) - print(*s++); -} - -void SoftwareSerial::print(char c) -{ - print((uint8_t) c); -} - -void SoftwareSerial::print(int n) -{ - print((long) n); -} - -void SoftwareSerial::print(unsigned int n) -{ - print((unsigned long) n); -} - -void SoftwareSerial::print(long n) -{ - if (n < 0) { - print('-'); - n = -n; - } - printNumber(n, 10); -} - -void SoftwareSerial::print(unsigned long n) -{ - printNumber(n, 10); -} - -void SoftwareSerial::print(long n, int base) -{ - if (base == 0) - print((char) n); - else if (base == 10) - print(n); - else - printNumber(n, base); -} - -void SoftwareSerial::println(void) -{ - print('\r'); - print('\n'); -} - -void SoftwareSerial::println(char c) -{ - print(c); - println(); -} - -void SoftwareSerial::println(const char c[]) -{ - print(c); - println(); -} - -void SoftwareSerial::println(uint8_t b) -{ - print(b); - println(); -} - -void SoftwareSerial::println(int n) -{ - print(n); - println(); -} - -void SoftwareSerial::println(long n) -{ - print(n); - println(); -} - -void SoftwareSerial::println(unsigned long n) -{ - print(n); - println(); -} - -void SoftwareSerial::println(long n, int base) -{ - print(n, base); - println(); -} - -// Private Methods ///////////////////////////////////////////////////////////// - -void SoftwareSerial::printNumber(unsigned long n, uint8_t base) -{ - unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. - unsigned long i = 0; - - if (n == 0) { - print('0'); - return; - } - - while (n > 0) { - buf[i++] = n % base; - n /= base; - } - - for (; i > 0; i--) - print((char) (buf[i - 1] < 10 ? '0' + buf[i - 1] : 'A' + buf[i - 1] - 10)); -} diff --git a/core/libraries/SoftwareSerial/SoftwareSerial.h b/core/libraries/SoftwareSerial/SoftwareSerial.h deleted file mode 100755 index 95753fc..0000000 --- a/core/libraries/SoftwareSerial/SoftwareSerial.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - SoftwareSerial.h - Software serial library - Copyright (c) 2006 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef SoftwareSerial_h -#define SoftwareSerial_h - -#include <inttypes.h> - -class SoftwareSerial -{ - private: - uint8_t _receivePin; - uint8_t _transmitPin; - long _baudRate; - int _bitPeriod; - void printNumber(unsigned long, uint8_t); - public: - SoftwareSerial(uint8_t, uint8_t); - void begin(long); - int read(); - void print(char); - void print(const char[]); - void print(uint8_t); - void print(int); - void print(unsigned int); - void print(long); - void print(unsigned long); - void print(long, int); - void println(void); - void println(char); - void println(const char[]); - void println(uint8_t); - void println(int); - void println(long); - void println(unsigned long); - void println(long, int); -}; - -#endif - diff --git a/core/libraries/SoftwareSerial/keywords.txt b/core/libraries/SoftwareSerial/keywords.txt deleted file mode 100644 index de5a74c..0000000 --- a/core/libraries/SoftwareSerial/keywords.txt +++ /dev/null @@ -1,18 +0,0 @@ -####################################### -# Syntax Coloring Map For Ultrasound -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -SoftwareSerial KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/core/libraries/Sprite/Sprite.cpp b/core/libraries/Sprite/Sprite.cpp deleted file mode 100644 index 6055876..0000000 --- a/core/libraries/Sprite/Sprite.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* - Sprite.cpp - 2D sprite buffer library for Arduino & Wiring - Copyright (c) 2006 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include <stdlib.h> -#include <stdarg.h> -//#include <stdio.h> - -#include "Sprite.h" - -void Sprite::init(uint8_t width, uint8_t height) -{ - _width = width >= 8 ? 8 : width; - _height = height >= 8 ? 8 : height; - - // for now, do nothing if this allocation fails. methods that require it - // should silently fail if _buffer is null. - _buffer = (uint8_t *) calloc(_height, 1); -} - -Sprite::Sprite(uint8_t width, uint8_t height) -{ - init(width, height); -} - -Sprite::Sprite(uint8_t width, uint8_t height, uint8_t row, ...) -{ - init(width, height); - - if (!_buffer) return; - - va_list ap; - va_start(ap, row); - - int y = 0; - - for (y = 0; ; y++) { - for (int x = 0; x < width && x < 8; x++) - write(x, y, (row >> (width - x - 1)) & 0x01); - - if (y == height - 1) - break; - - row = va_arg(ap, int); // using '...' promotes uint8_t to int - } - - va_end(ap); -} - -uint8_t Sprite::width() const -{ - return _width; -} - -uint8_t Sprite::height() const -{ - return _height; -} - -void Sprite::write(uint8_t x, uint8_t y, uint8_t value) -{ - if (!_buffer) return; - - // uint8_t's can't be negative, so don't test for negative x and y. - if (x >= _width || y >= _height) return; - - // we need to bitwise-or the value of the other pixels in the byte with - // the new value, masked and shifted into the proper bits. - _buffer[y] = (_buffer[y] & ~(0x01 << x)) | ((value & 0x01) << x); -} - -uint8_t Sprite::read(uint8_t x, uint8_t y) const -{ - if (!_buffer) return 0; - - // uint8_t's can't be negative, so don't test for negative x and y. - if (x >= _width || y >= _height) return 0; - - return (_buffer[y] >> x) & 0x01; -} diff --git a/core/libraries/Sprite/Sprite.h b/core/libraries/Sprite/Sprite.h deleted file mode 100644 index bdcfdb8..0000000 --- a/core/libraries/Sprite/Sprite.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - Sprite.cpp - 2D sprite buffers library for Arduino & Wiring - Copyright (c) 2006 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Sprite_h -#define Sprite_h - -#include <inttypes.h> - -#include "binary.h" - -class Sprite -{ - private: - uint8_t _width; - uint8_t _height; - uint8_t _depth; - uint8_t _ppb; - uint8_t _bpr; - uint8_t _mask; - uint8_t *_buffer; - - void init(uint8_t width, uint8_t height); - public: - Sprite(uint8_t width, uint8_t height); - Sprite(uint8_t width, uint8_t height, uint8_t row, ...); - uint8_t width() const; - uint8_t height() const; - void write(uint8_t x, uint8_t y, uint8_t value); - uint8_t read(uint8_t x, uint8_t y) const; -}; - -#endif diff --git a/core/libraries/Sprite/binary.h b/core/libraries/Sprite/binary.h deleted file mode 100644 index af14980..0000000 --- a/core/libraries/Sprite/binary.h +++ /dev/null @@ -1,515 +0,0 @@ -#ifndef Binary_h -#define Binary_h - -#define B0 0 -#define B00 0 -#define B000 0 -#define B0000 0 -#define B00000 0 -#define B000000 0 -#define B0000000 0 -#define B00000000 0 -#define B1 1 -#define B01 1 -#define B001 1 -#define B0001 1 -#define B00001 1 -#define B000001 1 -#define B0000001 1 -#define B00000001 1 -#define B10 2 -#define B010 2 -#define B0010 2 -#define B00010 2 -#define B000010 2 -#define B0000010 2 -#define B00000010 2 -#define B11 3 -#define B011 3 -#define B0011 3 -#define B00011 3 -#define B000011 3 -#define B0000011 3 -#define B00000011 3 -#define B100 4 -#define B0100 4 -#define B00100 4 -#define B000100 4 -#define B0000100 4 -#define B00000100 4 -#define B101 5 -#define B0101 5 -#define B00101 5 -#define B000101 5 -#define B0000101 5 -#define B00000101 5 -#define B110 6 -#define B0110 6 -#define B00110 6 -#define B000110 6 -#define B0000110 6 -#define B00000110 6 -#define B111 7 -#define B0111 7 -#define B00111 7 -#define B000111 7 -#define B0000111 7 -#define B00000111 7 -#define B1000 8 -#define B01000 8 -#define B001000 8 -#define B0001000 8 -#define B00001000 8 -#define B1001 9 -#define B01001 9 -#define B001001 9 -#define B0001001 9 -#define B00001001 9 -#define B1010 10 -#define B01010 10 -#define B001010 10 -#define B0001010 10 -#define B00001010 10 -#define B1011 11 -#define B01011 11 -#define B001011 11 -#define B0001011 11 -#define B00001011 11 -#define B1100 12 -#define B01100 12 -#define B001100 12 -#define B0001100 12 -#define B00001100 12 -#define B1101 13 -#define B01101 13 -#define B001101 13 -#define B0001101 13 -#define B00001101 13 -#define B1110 14 -#define B01110 14 -#define B001110 14 -#define B0001110 14 -#define B00001110 14 -#define B1111 15 -#define B01111 15 -#define B001111 15 -#define B0001111 15 -#define B00001111 15 -#define B10000 16 -#define B010000 16 -#define B0010000 16 -#define B00010000 16 -#define B10001 17 -#define B010001 17 -#define B0010001 17 -#define B00010001 17 -#define B10010 18 -#define B010010 18 -#define B0010010 18 -#define B00010010 18 -#define B10011 19 -#define B010011 19 -#define B0010011 19 -#define B00010011 19 -#define B10100 20 -#define B010100 20 -#define B0010100 20 -#define B00010100 20 -#define B10101 21 -#define B010101 21 -#define B0010101 21 -#define B00010101 21 -#define B10110 22 -#define B010110 22 -#define B0010110 22 -#define B00010110 22 -#define B10111 23 -#define B010111 23 -#define B0010111 23 -#define B00010111 23 -#define B11000 24 -#define B011000 24 -#define B0011000 24 -#define B00011000 24 -#define B11001 25 -#define B011001 25 -#define B0011001 25 -#define B00011001 25 -#define B11010 26 -#define B011010 26 -#define B0011010 26 -#define B00011010 26 -#define B11011 27 -#define B011011 27 -#define B0011011 27 -#define B00011011 27 -#define B11100 28 -#define B011100 28 -#define B0011100 28 -#define B00011100 28 -#define B11101 29 -#define B011101 29 -#define B0011101 29 -#define B00011101 29 -#define B11110 30 -#define B011110 30 -#define B0011110 30 -#define B00011110 30 -#define B11111 31 -#define B011111 31 -#define B0011111 31 -#define B00011111 31 -#define B100000 32 -#define B0100000 32 -#define B00100000 32 -#define B100001 33 -#define B0100001 33 -#define B00100001 33 -#define B100010 34 -#define B0100010 34 -#define B00100010 34 -#define B100011 35 -#define B0100011 35 -#define B00100011 35 -#define B100100 36 -#define B0100100 36 -#define B00100100 36 -#define B100101 37 -#define B0100101 37 -#define B00100101 37 -#define B100110 38 -#define B0100110 38 -#define B00100110 38 -#define B100111 39 -#define B0100111 39 -#define B00100111 39 -#define B101000 40 -#define B0101000 40 -#define B00101000 40 -#define B101001 41 -#define B0101001 41 -#define B00101001 41 -#define B101010 42 -#define B0101010 42 -#define B00101010 42 -#define B101011 43 -#define B0101011 43 -#define B00101011 43 -#define B101100 44 -#define B0101100 44 -#define B00101100 44 -#define B101101 45 -#define B0101101 45 -#define B00101101 45 -#define B101110 46 -#define B0101110 46 -#define B00101110 46 -#define B101111 47 -#define B0101111 47 -#define B00101111 47 -#define B110000 48 -#define B0110000 48 -#define B00110000 48 -#define B110001 49 -#define B0110001 49 -#define B00110001 49 -#define B110010 50 -#define B0110010 50 -#define B00110010 50 -#define B110011 51 -#define B0110011 51 -#define B00110011 51 -#define B110100 52 -#define B0110100 52 -#define B00110100 52 -#define B110101 53 -#define B0110101 53 -#define B00110101 53 -#define B110110 54 -#define B0110110 54 -#define B00110110 54 -#define B110111 55 -#define B0110111 55 -#define B00110111 55 -#define B111000 56 -#define B0111000 56 -#define B00111000 56 -#define B111001 57 -#define B0111001 57 -#define B00111001 57 -#define B111010 58 -#define B0111010 58 -#define B00111010 58 -#define B111011 59 -#define B0111011 59 -#define B00111011 59 -#define B111100 60 -#define B0111100 60 -#define B00111100 60 -#define B111101 61 -#define B0111101 61 -#define B00111101 61 -#define B111110 62 -#define B0111110 62 -#define B00111110 62 -#define B111111 63 -#define B0111111 63 -#define B00111111 63 -#define B1000000 64 -#define B01000000 64 -#define B1000001 65 -#define B01000001 65 -#define B1000010 66 -#define B01000010 66 -#define B1000011 67 -#define B01000011 67 -#define B1000100 68 -#define B01000100 68 -#define B1000101 69 -#define B01000101 69 -#define B1000110 70 -#define B01000110 70 -#define B1000111 71 -#define B01000111 71 -#define B1001000 72 -#define B01001000 72 -#define B1001001 73 -#define B01001001 73 -#define B1001010 74 -#define B01001010 74 -#define B1001011 75 -#define B01001011 75 -#define B1001100 76 -#define B01001100 76 -#define B1001101 77 -#define B01001101 77 -#define B1001110 78 -#define B01001110 78 -#define B1001111 79 -#define B01001111 79 -#define B1010000 80 -#define B01010000 80 -#define B1010001 81 -#define B01010001 81 -#define B1010010 82 -#define B01010010 82 -#define B1010011 83 -#define B01010011 83 -#define B1010100 84 -#define B01010100 84 -#define B1010101 85 -#define B01010101 85 -#define B1010110 86 -#define B01010110 86 -#define B1010111 87 -#define B01010111 87 -#define B1011000 88 -#define B01011000 88 -#define B1011001 89 -#define B01011001 89 -#define B1011010 90 -#define B01011010 90 -#define B1011011 91 -#define B01011011 91 -#define B1011100 92 -#define B01011100 92 -#define B1011101 93 -#define B01011101 93 -#define B1011110 94 -#define B01011110 94 -#define B1011111 95 -#define B01011111 95 -#define B1100000 96 -#define B01100000 96 -#define B1100001 97 -#define B01100001 97 -#define B1100010 98 -#define B01100010 98 -#define B1100011 99 -#define B01100011 99 -#define B1100100 100 -#define B01100100 100 -#define B1100101 101 -#define B01100101 101 -#define B1100110 102 -#define B01100110 102 -#define B1100111 103 -#define B01100111 103 -#define B1101000 104 -#define B01101000 104 -#define B1101001 105 -#define B01101001 105 -#define B1101010 106 -#define B01101010 106 -#define B1101011 107 -#define B01101011 107 -#define B1101100 108 -#define B01101100 108 -#define B1101101 109 -#define B01101101 109 -#define B1101110 110 -#define B01101110 110 -#define B1101111 111 -#define B01101111 111 -#define B1110000 112 -#define B01110000 112 -#define B1110001 113 -#define B01110001 113 -#define B1110010 114 -#define B01110010 114 -#define B1110011 115 -#define B01110011 115 -#define B1110100 116 -#define B01110100 116 -#define B1110101 117 -#define B01110101 117 -#define B1110110 118 -#define B01110110 118 -#define B1110111 119 -#define B01110111 119 -#define B1111000 120 -#define B01111000 120 -#define B1111001 121 -#define B01111001 121 -#define B1111010 122 -#define B01111010 122 -#define B1111011 123 -#define B01111011 123 -#define B1111100 124 -#define B01111100 124 -#define B1111101 125 -#define B01111101 125 -#define B1111110 126 -#define B01111110 126 -#define B1111111 127 -#define B01111111 127 -#define B10000000 128 -#define B10000001 129 -#define B10000010 130 -#define B10000011 131 -#define B10000100 132 -#define B10000101 133 -#define B10000110 134 -#define B10000111 135 -#define B10001000 136 -#define B10001001 137 -#define B10001010 138 -#define B10001011 139 -#define B10001100 140 -#define B10001101 141 -#define B10001110 142 -#define B10001111 143 -#define B10010000 144 -#define B10010001 145 -#define B10010010 146 -#define B10010011 147 -#define B10010100 148 -#define B10010101 149 -#define B10010110 150 -#define B10010111 151 -#define B10011000 152 -#define B10011001 153 -#define B10011010 154 -#define B10011011 155 -#define B10011100 156 -#define B10011101 157 -#define B10011110 158 -#define B10011111 159 -#define B10100000 160 -#define B10100001 161 -#define B10100010 162 -#define B10100011 163 -#define B10100100 164 -#define B10100101 165 -#define B10100110 166 -#define B10100111 167 -#define B10101000 168 -#define B10101001 169 -#define B10101010 170 -#define B10101011 171 -#define B10101100 172 -#define B10101101 173 -#define B10101110 174 -#define B10101111 175 -#define B10110000 176 -#define B10110001 177 -#define B10110010 178 -#define B10110011 179 -#define B10110100 180 -#define B10110101 181 -#define B10110110 182 -#define B10110111 183 -#define B10111000 184 -#define B10111001 185 -#define B10111010 186 -#define B10111011 187 -#define B10111100 188 -#define B10111101 189 -#define B10111110 190 -#define B10111111 191 -#define B11000000 192 -#define B11000001 193 -#define B11000010 194 -#define B11000011 195 -#define B11000100 196 -#define B11000101 197 -#define B11000110 198 -#define B11000111 199 -#define B11001000 200 -#define B11001001 201 -#define B11001010 202 -#define B11001011 203 -#define B11001100 204 -#define B11001101 205 -#define B11001110 206 -#define B11001111 207 -#define B11010000 208 -#define B11010001 209 -#define B11010010 210 -#define B11010011 211 -#define B11010100 212 -#define B11010101 213 -#define B11010110 214 -#define B11010111 215 -#define B11011000 216 -#define B11011001 217 -#define B11011010 218 -#define B11011011 219 -#define B11011100 220 -#define B11011101 221 -#define B11011110 222 -#define B11011111 223 -#define B11100000 224 -#define B11100001 225 -#define B11100010 226 -#define B11100011 227 -#define B11100100 228 -#define B11100101 229 -#define B11100110 230 -#define B11100111 231 -#define B11101000 232 -#define B11101001 233 -#define B11101010 234 -#define B11101011 235 -#define B11101100 236 -#define B11101101 237 -#define B11101110 238 -#define B11101111 239 -#define B11110000 240 -#define B11110001 241 -#define B11110010 242 -#define B11110011 243 -#define B11110100 244 -#define B11110101 245 -#define B11110110 246 -#define B11110111 247 -#define B11111000 248 -#define B11111001 249 -#define B11111010 250 -#define B11111011 251 -#define B11111100 252 -#define B11111101 253 -#define B11111110 254 -#define B11111111 255 - -#endif diff --git a/core/libraries/Sprite/keywords.txt b/core/libraries/Sprite/keywords.txt deleted file mode 100644 index 73cd8d9..0000000 --- a/core/libraries/Sprite/keywords.txt +++ /dev/null @@ -1,534 +0,0 @@ -####################################### -# Syntax Coloring Map For Sprite -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Sprite KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -width KEYWORD2 -height KEYWORD2 -write KEYWORD2 -read KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - -B0 LITERAL1 -B00 LITERAL1 -B000 LITERAL1 -B0000 LITERAL1 -B00000 LITERAL1 -B000000 LITERAL1 -B0000000 LITERAL1 -B00000000 LITERAL1 -B1 LITERAL1 -B01 LITERAL1 -B001 LITERAL1 -B0001 LITERAL1 -B00001 LITERAL1 -B000001 LITERAL1 -B0000001 LITERAL1 -B00000001 LITERAL1 -B10 LITERAL1 -B010 LITERAL1 -B0010 LITERAL1 -B00010 LITERAL1 -B000010 LITERAL1 -B0000010 LITERAL1 -B00000010 LITERAL1 -B11 LITERAL1 -B011 LITERAL1 -B0011 LITERAL1 -B00011 LITERAL1 -B000011 LITERAL1 -B0000011 LITERAL1 -B00000011 LITERAL1 -B100 LITERAL1 -B0100 LITERAL1 -B00100 LITERAL1 -B000100 LITERAL1 -B0000100 LITERAL1 -B00000100 LITERAL1 -B101 LITERAL1 -B0101 LITERAL1 -B00101 LITERAL1 -B000101 LITERAL1 -B0000101 LITERAL1 -B00000101 LITERAL1 -B110 LITERAL1 -B0110 LITERAL1 -B00110 LITERAL1 -B000110 LITERAL1 -B0000110 LITERAL1 -B00000110 LITERAL1 -B111 LITERAL1 -B0111 LITERAL1 -B00111 LITERAL1 -B000111 LITERAL1 -B0000111 LITERAL1 -B00000111 LITERAL1 -B1000 LITERAL1 -B01000 LITERAL1 -B001000 LITERAL1 -B0001000 LITERAL1 -B00001000 LITERAL1 -B1001 LITERAL1 -B01001 LITERAL1 -B001001 LITERAL1 -B0001001 LITERAL1 -B00001001 LITERAL1 -B1010 LITERAL1 -B01010 LITERAL1 -B001010 LITERAL1 -B0001010 LITERAL1 -B00001010 LITERAL1 -B1011 LITERAL1 -B01011 LITERAL1 -B001011 LITERAL1 -B0001011 LITERAL1 -B00001011 LITERAL1 -B1100 LITERAL1 -B01100 LITERAL1 -B001100 LITERAL1 -B0001100 LITERAL1 -B00001100 LITERAL1 -B1101 LITERAL1 -B01101 LITERAL1 -B001101 LITERAL1 -B0001101 LITERAL1 -B00001101 LITERAL1 -B1110 LITERAL1 -B01110 LITERAL1 -B001110 LITERAL1 -B0001110 LITERAL1 -B00001110 LITERAL1 -B1111 LITERAL1 -B01111 LITERAL1 -B001111 LITERAL1 -B0001111 LITERAL1 -B00001111 LITERAL1 -B10000 LITERAL1 -B010000 LITERAL1 -B0010000 LITERAL1 -B00010000 LITERAL1 -B10001 LITERAL1 -B010001 LITERAL1 -B0010001 LITERAL1 -B00010001 LITERAL1 -B10010 LITERAL1 -B010010 LITERAL1 -B0010010 LITERAL1 -B00010010 LITERAL1 -B10011 LITERAL1 -B010011 LITERAL1 -B0010011 LITERAL1 -B00010011 LITERAL1 -B10100 LITERAL1 -B010100 LITERAL1 -B0010100 LITERAL1 -B00010100 LITERAL1 -B10101 LITERAL1 -B010101 LITERAL1 -B0010101 LITERAL1 -B00010101 LITERAL1 -B10110 LITERAL1 -B010110 LITERAL1 -B0010110 LITERAL1 -B00010110 LITERAL1 -B10111 LITERAL1 -B010111 LITERAL1 -B0010111 LITERAL1 -B00010111 LITERAL1 -B11000 LITERAL1 -B011000 LITERAL1 -B0011000 LITERAL1 -B00011000 LITERAL1 -B11001 LITERAL1 -B011001 LITERAL1 -B0011001 LITERAL1 -B00011001 LITERAL1 -B11010 LITERAL1 -B011010 LITERAL1 -B0011010 LITERAL1 -B00011010 LITERAL1 -B11011 LITERAL1 -B011011 LITERAL1 -B0011011 LITERAL1 -B00011011 LITERAL1 -B11100 LITERAL1 -B011100 LITERAL1 -B0011100 LITERAL1 -B00011100 LITERAL1 -B11101 LITERAL1 -B011101 LITERAL1 -B0011101 LITERAL1 -B00011101 LITERAL1 -B11110 LITERAL1 -B011110 LITERAL1 -B0011110 LITERAL1 -B00011110 LITERAL1 -B11111 LITERAL1 -B011111 LITERAL1 -B0011111 LITERAL1 -B00011111 LITERAL1 -B100000 LITERAL1 -B0100000 LITERAL1 -B00100000 LITERAL1 -B100001 LITERAL1 -B0100001 LITERAL1 -B00100001 LITERAL1 -B100010 LITERAL1 -B0100010 LITERAL1 -B00100010 LITERAL1 -B100011 LITERAL1 -B0100011 LITERAL1 -B00100011 LITERAL1 -B100100 LITERAL1 -B0100100 LITERAL1 -B00100100 LITERAL1 -B100101 LITERAL1 -B0100101 LITERAL1 -B00100101 LITERAL1 -B100110 LITERAL1 -B0100110 LITERAL1 -B00100110 LITERAL1 -B100111 LITERAL1 -B0100111 LITERAL1 -B00100111 LITERAL1 -B101000 LITERAL1 -B0101000 LITERAL1 -B00101000 LITERAL1 -B101001 LITERAL1 -B0101001 LITERAL1 -B00101001 LITERAL1 -B101010 LITERAL1 -B0101010 LITERAL1 -B00101010 LITERAL1 -B101011 LITERAL1 -B0101011 LITERAL1 -B00101011 LITERAL1 -B101100 LITERAL1 -B0101100 LITERAL1 -B00101100 LITERAL1 -B101101 LITERAL1 -B0101101 LITERAL1 -B00101101 LITERAL1 -B101110 LITERAL1 -B0101110 LITERAL1 -B00101110 LITERAL1 -B101111 LITERAL1 -B0101111 LITERAL1 -B00101111 LITERAL1 -B110000 LITERAL1 -B0110000 LITERAL1 -B00110000 LITERAL1 -B110001 LITERAL1 -B0110001 LITERAL1 -B00110001 LITERAL1 -B110010 LITERAL1 -B0110010 LITERAL1 -B00110010 LITERAL1 -B110011 LITERAL1 -B0110011 LITERAL1 -B00110011 LITERAL1 -B110100 LITERAL1 -B0110100 LITERAL1 -B00110100 LITERAL1 -B110101 LITERAL1 -B0110101 LITERAL1 -B00110101 LITERAL1 -B110110 LITERAL1 -B0110110 LITERAL1 -B00110110 LITERAL1 -B110111 LITERAL1 -B0110111 LITERAL1 -B00110111 LITERAL1 -B111000 LITERAL1 -B0111000 LITERAL1 -B00111000 LITERAL1 -B111001 LITERAL1 -B0111001 LITERAL1 -B00111001 LITERAL1 -B111010 LITERAL1 -B0111010 LITERAL1 -B00111010 LITERAL1 -B111011 LITERAL1 -B0111011 LITERAL1 -B00111011 LITERAL1 -B111100 LITERAL1 -B0111100 LITERAL1 -B00111100 LITERAL1 -B111101 LITERAL1 -B0111101 LITERAL1 -B00111101 LITERAL1 -B111110 LITERAL1 -B0111110 LITERAL1 -B00111110 LITERAL1 -B111111 LITERAL1 -B0111111 LITERAL1 -B00111111 LITERAL1 -B1000000 LITERAL1 -B01000000 LITERAL1 -B1000001 LITERAL1 -B01000001 LITERAL1 -B1000010 LITERAL1 -B01000010 LITERAL1 -B1000011 LITERAL1 -B01000011 LITERAL1 -B1000100 LITERAL1 -B01000100 LITERAL1 -B1000101 LITERAL1 -B01000101 LITERAL1 -B1000110 LITERAL1 -B01000110 LITERAL1 -B1000111 LITERAL1 -B01000111 LITERAL1 -B1001000 LITERAL1 -B01001000 LITERAL1 -B1001001 LITERAL1 -B01001001 LITERAL1 -B1001010 LITERAL1 -B01001010 LITERAL1 -B1001011 LITERAL1 -B01001011 LITERAL1 -B1001100 LITERAL1 -B01001100 LITERAL1 -B1001101 LITERAL1 -B01001101 LITERAL1 -B1001110 LITERAL1 -B01001110 LITERAL1 -B1001111 LITERAL1 -B01001111 LITERAL1 -B1010000 LITERAL1 -B01010000 LITERAL1 -B1010001 LITERAL1 -B01010001 LITERAL1 -B1010010 LITERAL1 -B01010010 LITERAL1 -B1010011 LITERAL1 -B01010011 LITERAL1 -B1010100 LITERAL1 -B01010100 LITERAL1 -B1010101 LITERAL1 -B01010101 LITERAL1 -B1010110 LITERAL1 -B01010110 LITERAL1 -B1010111 LITERAL1 -B01010111 LITERAL1 -B1011000 LITERAL1 -B01011000 LITERAL1 -B1011001 LITERAL1 -B01011001 LITERAL1 -B1011010 LITERAL1 -B01011010 LITERAL1 -B1011011 LITERAL1 -B01011011 LITERAL1 -B1011100 LITERAL1 -B01011100 LITERAL1 -B1011101 LITERAL1 -B01011101 LITERAL1 -B1011110 LITERAL1 -B01011110 LITERAL1 -B1011111 LITERAL1 -B01011111 LITERAL1 -B1100000 LITERAL1 -B01100000 LITERAL1 -B1100001 LITERAL1 -B01100001 LITERAL1 -B1100010 LITERAL1 -B01100010 LITERAL1 -B1100011 LITERAL1 -B01100011 LITERAL1 -B1100100 LITERAL1 -B01100100 LITERAL1 -B1100101 LITERAL1 -B01100101 LITERAL1 -B1100110 LITERAL1 -B01100110 LITERAL1 -B1100111 LITERAL1 -B01100111 LITERAL1 -B1101000 LITERAL1 -B01101000 LITERAL1 -B1101001 LITERAL1 -B01101001 LITERAL1 -B1101010 LITERAL1 -B01101010 LITERAL1 -B1101011 LITERAL1 -B01101011 LITERAL1 -B1101100 LITERAL1 -B01101100 LITERAL1 -B1101101 LITERAL1 -B01101101 LITERAL1 -B1101110 LITERAL1 -B01101110 LITERAL1 -B1101111 LITERAL1 -B01101111 LITERAL1 -B1110000 LITERAL1 -B01110000 LITERAL1 -B1110001 LITERAL1 -B01110001 LITERAL1 -B1110010 LITERAL1 -B01110010 LITERAL1 -B1110011 LITERAL1 -B01110011 LITERAL1 -B1110100 LITERAL1 -B01110100 LITERAL1 -B1110101 LITERAL1 -B01110101 LITERAL1 -B1110110 LITERAL1 -B01110110 LITERAL1 -B1110111 LITERAL1 -B01110111 LITERAL1 -B1111000 LITERAL1 -B01111000 LITERAL1 -B1111001 LITERAL1 -B01111001 LITERAL1 -B1111010 LITERAL1 -B01111010 LITERAL1 -B1111011 LITERAL1 -B01111011 LITERAL1 -B1111100 LITERAL1 -B01111100 LITERAL1 -B1111101 LITERAL1 -B01111101 LITERAL1 -B1111110 LITERAL1 -B01111110 LITERAL1 -B1111111 LITERAL1 -B01111111 LITERAL1 -B10000000 LITERAL1 -B10000001 LITERAL1 -B10000010 LITERAL1 -B10000011 LITERAL1 -B10000100 LITERAL1 -B10000101 LITERAL1 -B10000110 LITERAL1 -B10000111 LITERAL1 -B10001000 LITERAL1 -B10001001 LITERAL1 -B10001010 LITERAL1 -B10001011 LITERAL1 -B10001100 LITERAL1 -B10001101 LITERAL1 -B10001110 LITERAL1 -B10001111 LITERAL1 -B10010000 LITERAL1 -B10010001 LITERAL1 -B10010010 LITERAL1 -B10010011 LITERAL1 -B10010100 LITERAL1 -B10010101 LITERAL1 -B10010110 LITERAL1 -B10010111 LITERAL1 -B10011000 LITERAL1 -B10011001 LITERAL1 -B10011010 LITERAL1 -B10011011 LITERAL1 -B10011100 LITERAL1 -B10011101 LITERAL1 -B10011110 LITERAL1 -B10011111 LITERAL1 -B10100000 LITERAL1 -B10100001 LITERAL1 -B10100010 LITERAL1 -B10100011 LITERAL1 -B10100100 LITERAL1 -B10100101 LITERAL1 -B10100110 LITERAL1 -B10100111 LITERAL1 -B10101000 LITERAL1 -B10101001 LITERAL1 -B10101010 LITERAL1 -B10101011 LITERAL1 -B10101100 LITERAL1 -B10101101 LITERAL1 -B10101110 LITERAL1 -B10101111 LITERAL1 -B10110000 LITERAL1 -B10110001 LITERAL1 -B10110010 LITERAL1 -B10110011 LITERAL1 -B10110100 LITERAL1 -B10110101 LITERAL1 -B10110110 LITERAL1 -B10110111 LITERAL1 -B10111000 LITERAL1 -B10111001 LITERAL1 -B10111010 LITERAL1 -B10111011 LITERAL1 -B10111100 LITERAL1 -B10111101 LITERAL1 -B10111110 LITERAL1 -B10111111 LITERAL1 -B11000000 LITERAL1 -B11000001 LITERAL1 -B11000010 LITERAL1 -B11000011 LITERAL1 -B11000100 LITERAL1 -B11000101 LITERAL1 -B11000110 LITERAL1 -B11000111 LITERAL1 -B11001000 LITERAL1 -B11001001 LITERAL1 -B11001010 LITERAL1 -B11001011 LITERAL1 -B11001100 LITERAL1 -B11001101 LITERAL1 -B11001110 LITERAL1 -B11001111 LITERAL1 -B11010000 LITERAL1 -B11010001 LITERAL1 -B11010010 LITERAL1 -B11010011 LITERAL1 -B11010100 LITERAL1 -B11010101 LITERAL1 -B11010110 LITERAL1 -B11010111 LITERAL1 -B11011000 LITERAL1 -B11011001 LITERAL1 -B11011010 LITERAL1 -B11011011 LITERAL1 -B11011100 LITERAL1 -B11011101 LITERAL1 -B11011110 LITERAL1 -B11011111 LITERAL1 -B11100000 LITERAL1 -B11100001 LITERAL1 -B11100010 LITERAL1 -B11100011 LITERAL1 -B11100100 LITERAL1 -B11100101 LITERAL1 -B11100110 LITERAL1 -B11100111 LITERAL1 -B11101000 LITERAL1 -B11101001 LITERAL1 -B11101010 LITERAL1 -B11101011 LITERAL1 -B11101100 LITERAL1 -B11101101 LITERAL1 -B11101110 LITERAL1 -B11101111 LITERAL1 -B11110000 LITERAL1 -B11110001 LITERAL1 -B11110010 LITERAL1 -B11110011 LITERAL1 -B11110100 LITERAL1 -B11110101 LITERAL1 -B11110110 LITERAL1 -B11110111 LITERAL1 -B11111000 LITERAL1 -B11111001 LITERAL1 -B11111010 LITERAL1 -B11111011 LITERAL1 -B11111100 LITERAL1 -B11111101 LITERAL1 -B11111110 LITERAL1 -B11111111 LITERAL1 - diff --git a/core/libraries/Stepper/Stepper.cpp b/core/libraries/Stepper/Stepper.cpp deleted file mode 100644 index b10f94c..0000000 --- a/core/libraries/Stepper/Stepper.cpp +++ /dev/null @@ -1,220 +0,0 @@ -/* - Stepper.cpp - - Stepper library for Wiring/Arduino - Version 0.4 - - Original library (0.1) by Tom Igoe. - Two-wire modifications (0.2) by Sebastian Gassner - Combination version (0.3) by Tom Igoe and David Mellis - Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley - - Drives a unipolar or bipolar stepper motor using 2 wires or 4 wires - - When wiring multiple stepper motors to a microcontroller, - you quickly run out of output pins, with each motor requiring 4 connections. - - By making use of the fact that at any time two of the four motor - coils are the inverse of the other two, the number of - control connections can be reduced from 4 to 2. - - A slightly modified circuit around a Darlington transistor array or an L293 H-bridge - connects to only 2 microcontroler pins, inverts the signals received, - and delivers the 4 (2 plus 2 inverted ones) output signals required - for driving a stepper motor. - - The sequence of control signals for 4 control wires is as follows: - - Step C0 C1 C2 C3 - 1 1 0 1 0 - 2 0 1 1 0 - 3 0 1 0 1 - 4 1 0 0 1 - - The sequence of controls signals for 2 control wires is as follows - (columns C1 and C2 from above): - - Step C0 C1 - 1 0 1 - 2 1 1 - 3 1 0 - 4 0 0 - - The circuits can be found at - -http://www.arduino.cc/en/Tutorial/Stepper - - - */ - - -#include "WProgram.h" -#include "Stepper.h" - -/* - * two-wire constructor. - * Sets which wires should control the motor. - */ -Stepper::Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2) -{ - this->step_number = 0; // which step the motor is on - this->speed = 0; // the motor speed, in revolutions per minute - this->direction = 0; // motor direction - this->last_step_time = 0; // time stamp in ms of the last step taken - this->number_of_steps = number_of_steps; // total number of steps for this motor - - // Arduino pins for the motor control connection: - this->motor_pin_1 = motor_pin_1; - this->motor_pin_2 = motor_pin_2; - - // setup the pins on the microcontroller: - pinMode(this->motor_pin_1, OUTPUT); - pinMode(this->motor_pin_2, OUTPUT); - - // When there are only 2 pins, set the other two to 0: - this->motor_pin_3 = 0; - this->motor_pin_4 = 0; - - // pin_count is used by the stepMotor() method: - this->pin_count = 2; -} - - -/* - * constructor for four-pin version - * Sets which wires should control the motor. - */ - -Stepper::Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4) -{ - this->step_number = 0; // which step the motor is on - this->speed = 0; // the motor speed, in revolutions per minute - this->direction = 0; // motor direction - this->last_step_time = 0; // time stamp in ms of the last step taken - this->number_of_steps = number_of_steps; // total number of steps for this motor - - // Arduino pins for the motor control connection: - this->motor_pin_1 = motor_pin_1; - this->motor_pin_2 = motor_pin_2; - this->motor_pin_3 = motor_pin_3; - this->motor_pin_4 = motor_pin_4; - - // setup the pins on the microcontroller: - pinMode(this->motor_pin_1, OUTPUT); - pinMode(this->motor_pin_2, OUTPUT); - pinMode(this->motor_pin_3, OUTPUT); - pinMode(this->motor_pin_4, OUTPUT); - - // pin_count is used by the stepMotor() method: - this->pin_count = 4; -} - -/* - Sets the speed in revs per minute - -*/ -void Stepper::setSpeed(long whatSpeed) -{ - this->step_delay = 60L * 1000L / this->number_of_steps / whatSpeed; -} - -/* - Moves the motor steps_to_move steps. If the number is negative, - the motor moves in the reverse direction. - */ -void Stepper::step(int steps_to_move) -{ - int steps_left = abs(steps_to_move); // how many steps to take - - // determine direction based on whether steps_to_mode is + or -: - if (steps_to_move > 0) {this->direction = 1;} - if (steps_to_move < 0) {this->direction = 0;} - - - // decrement the number of steps, moving one step each time: - while(steps_left > 0) { - // move only if the appropriate delay has passed: - if (millis() - this->last_step_time >= this->step_delay) { - // step the motor to step number 0, 1, 2, or 3: - stepMotor(this->step_number % 4); - // get the timeStamp of when you stepped: - this->last_step_time = millis(); - // increment or decrement the step number, - // depending on direction: - if (this->direction == 1) { - this->step_number++; - if (this->step_number == this->number_of_steps) { - this->step_number = 0; - } - } - else { - if (this->step_number == 0) { - this->step_number = this->number_of_steps; - } - this->step_number--; - } - // decrement the steps left: - steps_left--; - } - } -} - -/* - * Moves the motor forward or backwards. - */ -void Stepper::stepMotor(int thisStep) -{ - if (this->pin_count == 2) { - switch (thisStep) { - case 0: /* 01 */ - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - break; - case 1: /* 11 */ - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, HIGH); - break; - case 2: /* 10 */ - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - break; - case 3: /* 00 */ - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, LOW); - break; - } - } - if (this->pin_count == 4) { - switch (thisStep) { - case 0: // 1010 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - break; - case 1: // 0110 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - break; - case 2: //0101 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - break; - case 3: //1001 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - break; - } - } -} - -/* - version() returns the version of the library: -*/ -int Stepper::version(void) -{ - return 4; -} diff --git a/core/libraries/Stepper/Stepper.h b/core/libraries/Stepper/Stepper.h deleted file mode 100644 index a3aa180..0000000 --- a/core/libraries/Stepper/Stepper.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - Stepper.h - - Stepper library for Wiring/Arduino - Version 0.4 - - Original library (0.1) by Tom Igoe. - Two-wire modifications (0.2) by Sebastian Gassner - Combination version (0.3) by Tom Igoe and David Mellis - Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley - - Drives a unipolar or bipolar stepper motor using 2 wires or 4 wires - - When wiring multiple stepper motors to a microcontroller, - you quickly run out of output pins, with each motor requiring 4 connections. - - By making use of the fact that at any time two of the four motor - coils are the inverse of the other two, the number of - control connections can be reduced from 4 to 2. - - A slightly modified circuit around a Darlington transistor array or an L293 H-bridge - connects to only 2 microcontroler pins, inverts the signals received, - and delivers the 4 (2 plus 2 inverted ones) output signals required - for driving a stepper motor. - - The sequence of control signals for 4 control wires is as follows: - - Step C0 C1 C2 C3 - 1 1 0 1 0 - 2 0 1 1 0 - 3 0 1 0 1 - 4 1 0 0 1 - - The sequence of controls signals for 2 control wires is as follows - (columns C1 and C2 from above): - - Step C0 C1 - 1 0 1 - 2 1 1 - 3 1 0 - 4 0 0 - - The circuits can be found at - http://www.arduino.cc/en/Tutorial/Stepper -*/ - -// ensure this library description is only included once -#ifndef Stepper_h -#define Stepper_h - -// include types & constants of Wiring core API -#include "WConstants.h" - -// library interface description -class Stepper { - public: - // constructors: - Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2); - Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4); - - // speed setter method: - void setSpeed(long whatSpeed); - - // mover method: - void step(int number_of_steps); - - int version(void); - - private: - void stepMotor(int this_step); - - int direction; // Direction of rotation - int speed; // Speed in RPMs - unsigned long step_delay; // delay between steps, in ms, based on speed - int number_of_steps; // total number of steps this motor can take - int pin_count; // whether you're driving the motor with 2 or 4 pins - int step_number; // which step the motor is on - - // motor pin numbers: - int motor_pin_1; - int motor_pin_2; - int motor_pin_3; - int motor_pin_4; - - long last_step_time; // time stamp in ms of when the last step was taken -}; - -#endif - diff --git a/core/libraries/Stepper/examples/MotorKnob/MotorKnob.pde b/core/libraries/Stepper/examples/MotorKnob/MotorKnob.pde deleted file mode 100644 index 062cac9..0000000 --- a/core/libraries/Stepper/examples/MotorKnob/MotorKnob.pde +++ /dev/null @@ -1,40 +0,0 @@ -/* - * MotorKnob - * - * A stepper motor follows the turns of a potentiometer - * (or other sensor) on analog input 0. - * - * http://www.arduino.cc/en/Reference/Stepper - */ - -#include <Stepper.h> - -// change this to the number of steps on your motor -#define STEPS 100 - -// create an instance of the stepper class, specifying -// the number of steps of the motor and the pins it's -// attached to -Stepper stepper(STEPS, 8, 9, 10, 11); - -// the previous reading from the analog input -int previous = 0; - -void setup() -{ - // set the speed of the motor to 30 RPMs - stepper.setSpeed(30); -} - -void loop() -{ - // get the sensor value - int val = analogRead(0); - - // move a number of steps equal to the change in the - // sensor reading - stepper.step(val - previous); - - // remember the previous value of the sensor - previous = val; -}
\ No newline at end of file diff --git a/core/libraries/Stepper/keywords.txt b/core/libraries/Stepper/keywords.txt deleted file mode 100644 index 19a0fad..0000000 --- a/core/libraries/Stepper/keywords.txt +++ /dev/null @@ -1,28 +0,0 @@ -####################################### -# Syntax Coloring Map For Test -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Stepper KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -step KEYWORD2 -setSpeed KEYWORD2 -version KEYWORD2 - -###################################### -# Instances (KEYWORD2) -####################################### -direction KEYWORD2 -speed KEYWORD2 - - -####################################### -# Constants (LITERAL1) -####################################### diff --git a/core/libraries/Wire/Wire.cpp b/core/libraries/Wire/Wire.cpp deleted file mode 100755 index 73369b3..0000000 --- a/core/libraries/Wire/Wire.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/* - TwoWire.cpp - TWI/I2C library for Wiring & Arduino - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -extern "C" { - #include <stdlib.h> - #include <string.h> - #include <inttypes.h> - #include "twi.h" -} - -#include "Wire.h" - -// Initialize Class Variables ////////////////////////////////////////////////// - -uint8_t* TwoWire::rxBuffer = 0; -uint8_t TwoWire::rxBufferIndex = 0; -uint8_t TwoWire::rxBufferLength = 0; - -uint8_t TwoWire::txAddress = 0; -uint8_t* TwoWire::txBuffer = 0; -uint8_t TwoWire::txBufferIndex = 0; -uint8_t TwoWire::txBufferLength = 0; - -uint8_t TwoWire::transmitting = 0; -void (*TwoWire::user_onRequest)(void); -void (*TwoWire::user_onReceive)(int); - -// Constructors //////////////////////////////////////////////////////////////// - -TwoWire::TwoWire() -{ -} - -// Public Methods ////////////////////////////////////////////////////////////// - -void TwoWire::begin(void) -{ - // init buffer for reads - rxBuffer = (uint8_t*) calloc(BUFFER_LENGTH, sizeof(uint8_t)); - rxBufferIndex = 0; - rxBufferLength = 0; - - // init buffer for writes - txBuffer = (uint8_t*) calloc(BUFFER_LENGTH, sizeof(uint8_t)); - txBufferIndex = 0; - txBufferLength = 0; - - twi_init(); -} - -void TwoWire::begin(uint8_t address) -{ - twi_setAddress(address); - twi_attachSlaveTxEvent(onRequestService); - twi_attachSlaveRxEvent(onReceiveService); - begin(); -} - -void TwoWire::begin(int address) -{ - begin((uint8_t)address); -} - -void TwoWire::requestFrom(uint8_t address, uint8_t quantity) -{ - // clamp to buffer length - if(quantity > BUFFER_LENGTH){ - quantity = BUFFER_LENGTH; - } - // perform blocking read into buffer - twi_readFrom(address, rxBuffer, quantity); - // set rx buffer iterator vars - rxBufferIndex = 0; - rxBufferLength = quantity; -} - -void TwoWire::requestFrom(int address, int quantity) -{ - requestFrom((uint8_t)address, (uint8_t)quantity); -} - -void TwoWire::beginTransmission(uint8_t address) -{ - // indicate that we are transmitting - transmitting = 1; - // set address of targeted slave - txAddress = address; - // reset tx buffer iterator vars - txBufferIndex = 0; - txBufferLength = 0; -} - -void TwoWire::beginTransmission(int address) -{ - beginTransmission((uint8_t)address); -} - -void TwoWire::endTransmission(void) -{ - // transmit buffer (blocking) - twi_writeTo(txAddress, txBuffer, txBufferLength, 1); - // reset tx buffer iterator vars - txBufferIndex = 0; - txBufferLength = 0; - // indicate that we are done transmitting - transmitting = 0; -} - -// must be called in: -// slave tx event callback -// or after beginTransmission(address) -void TwoWire::send(uint8_t data) -{ - if(transmitting){ - // in master transmitter mode - // don't bother if buffer is full - if(txBufferLength >= BUFFER_LENGTH){ - return; - } - // put byte in tx buffer - txBuffer[txBufferIndex] = data; - ++txBufferIndex; - // update amount in buffer - txBufferLength = txBufferIndex; - }else{ - // in slave send mode - // reply to master - twi_transmit(&data, 1); - } -} - -// must be called in: -// slave tx event callback -// or after beginTransmission(address) -void TwoWire::send(uint8_t* data, uint8_t quantity) -{ - if(transmitting){ - // in master transmitter mode - for(uint8_t i = 0; i < quantity; ++i){ - send(data[i]); - } - }else{ - // in slave send mode - // reply to master - twi_transmit(data, quantity); - } -} - -// must be called in: -// slave tx event callback -// or after beginTransmission(address) -void TwoWire::send(char* data) -{ - send((uint8_t*)data, strlen(data)); -} - -// must be called in: -// slave tx event callback -// or after beginTransmission(address) -void TwoWire::send(int data) -{ - send((uint8_t)data); -} - -// must be called in: -// slave rx event callback -// or after requestFrom(address, numBytes) -uint8_t TwoWire::available(void) -{ - return rxBufferLength - rxBufferIndex; -} - -// must be called in: -// slave rx event callback -// or after requestFrom(address, numBytes) -uint8_t TwoWire::receive(void) -{ - // default to returning null char - // for people using with char strings - uint8_t value = '\0'; - - // get each successive byte on each call - if(rxBufferIndex < rxBufferLength){ - value = rxBuffer[rxBufferIndex]; - ++rxBufferIndex; - } - - return value; -} - -// behind the scenes function that is called when data is received -void TwoWire::onReceiveService(uint8_t* inBytes, int numBytes) -{ - // don't bother if user hasn't registered a callback - if(!user_onReceive){ - return; - } - // don't bother if rx buffer is in use by a master requestFrom() op - // i know this drops data, but it allows for slight stupidity - // meaning, they may not have read all the master requestFrom() data yet - if(rxBufferIndex < rxBufferLength){ - return; - } - // copy twi rx buffer into local read buffer - // this enables new reads to happen in parallel - for(uint8_t i = 0; i < numBytes; ++i){ - rxBuffer[i] = inBytes[i]; - } - // set rx iterator vars - rxBufferIndex = 0; - rxBufferLength = numBytes; - // alert user program - user_onReceive(numBytes); -} - -// behind the scenes function that is called when data is requested -void TwoWire::onRequestService(void) -{ - // don't bother if user hasn't registered a callback - if(!user_onRequest){ - return; - } - // reset tx buffer iterator vars - // !!! this will kill any pending pre-master sendTo() activity - txBufferIndex = 0; - txBufferLength = 0; - // alert user program - user_onRequest(); -} - -// sets function called on slave write -void TwoWire::onReceive( void (*function)(int) ) -{ - user_onReceive = function; -} - -// sets function called on slave read -void TwoWire::onRequest( void (*function)(void) ) -{ - user_onRequest = function; -} - -// Preinstantiate Objects ////////////////////////////////////////////////////// - -TwoWire Wire = TwoWire(); - diff --git a/core/libraries/Wire/Wire.h b/core/libraries/Wire/Wire.h deleted file mode 100755 index 9c91b9b..0000000 --- a/core/libraries/Wire/Wire.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - TwoWire.h - TWI/I2C library for Arduino & Wiring - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef TwoWire_h -#define TwoWire_h - -#include <inttypes.h> - -#define BUFFER_LENGTH 32 - -class TwoWire -{ - private: - static uint8_t* rxBuffer; - static uint8_t rxBufferIndex; - static uint8_t rxBufferLength; - - static uint8_t txAddress; - static uint8_t* txBuffer; - static uint8_t txBufferIndex; - static uint8_t txBufferLength; - - static uint8_t transmitting; - static void (*user_onRequest)(void); - static void (*user_onReceive)(int); - static void onRequestService(void); - static void onReceiveService(uint8_t*, int); - public: - TwoWire(); - void begin(); - void begin(uint8_t); - void begin(int); - void beginTransmission(uint8_t); - void beginTransmission(int); - void endTransmission(void); - void requestFrom(uint8_t, uint8_t); - void requestFrom(int, int); - void send(uint8_t); - void send(uint8_t*, uint8_t); - void send(int); - void send(char*); - uint8_t available(void); - uint8_t receive(void); - void onReceive( void (*)(int) ); - void onRequest( void (*)(void) ); -}; - -extern TwoWire Wire; - -#endif - diff --git a/core/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde b/core/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde deleted file mode 100755 index c89b0f0..0000000 --- a/core/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde +++ /dev/null @@ -1,84 +0,0 @@ -// I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder -// by Nicholas Zambetti <http://www.zambetti.com> -// and James Tichenor <http://www.jamestichenor.net> - -// Demonstrates use of the Wire library reading data from the -// Devantech Utrasonic Rangers SFR08 and SFR10 - -// Created 29 April 2006 - -#include <Wire.h> - -void setup() -{ - Wire.begin(); // join i2c bus (address optional for master) - Serial.begin(9600); // start serial communication at 9600bps -} - -int reading = 0; - -void loop() -{ - // step 1: instruct sensor to read echoes - Wire.beginTransmission(112); // transmit to device #112 (0x70) - // the address specified in the datasheet is 224 (0xE0) - // but i2c adressing uses the high 7 bits so it's 112 - Wire.send(0x00); // sets register pointer to the command register (0x00) - Wire.send(0x50); // command sensor to measure in "inches" (0x50) - // use 0x51 for centimeters - // use 0x52 for ping microseconds - Wire.endTransmission(); // stop transmitting - - // step 2: wait for readings to happen - delay(70); // datasheet suggests at least 65 milliseconds - - // step 3: instruct sensor to return a particular echo reading - Wire.beginTransmission(112); // transmit to device #112 - Wire.send(0x02); // sets register pointer to echo #1 register (0x02) - Wire.endTransmission(); // stop transmitting - - // step 4: request reading from sensor - Wire.requestFrom(112, 2); // request 2 bytes from slave device #112 - - // step 5: receive reading from sensor - if(2 <= Wire.available()) // if two bytes were received - { - reading = Wire.receive(); // receive high byte (overwrites previous reading) - reading = reading << 8; // shift high byte to be high 8 bits - reading |= Wire.receive(); // receive low byte as lower 8 bits - Serial.println(reading); // print the reading - } - - delay(250); // wait a bit since people have to read the output :) -} - - -/* - -// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) -// usage: changeAddress(0x70, 0xE6); - -void changeAddress(byte oldAddress, byte newAddress) -{ - Wire.beginTransmission(oldAddress); - Wire.send(0x00); - Wire.send(0xA0); - Wire.endTransmission(); - - Wire.beginTransmission(oldAddress); - Wire.send(0x00); - Wire.send(0xAA); - Wire.endTransmission(); - - Wire.beginTransmission(oldAddress); - Wire.send(0x00); - Wire.send(0xA5); - Wire.endTransmission(); - - Wire.beginTransmission(oldAddress); - Wire.send(0x00); - Wire.send(newAddress); - Wire.endTransmission(); -} - -*/ diff --git a/core/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde b/core/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde deleted file mode 100644 index 35ee5d6..0000000 --- a/core/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde +++ /dev/null @@ -1,34 +0,0 @@ -// I2C Digital Potentiometer -// by Nicholas Zambetti <http://www.zambetti.com> -// and Shawn Bonkowski <http://people.interaction-ivrea.it/s.bonkowski/> - -// Demonstrates use of the Wire library -// Controls AD5171 digital potentiometer via I2C/TWI - -// Created 31 March 2006 - -#include <Wire.h> - -void setup() -{ - Wire.begin(); // join i2c bus (address optional for master) -} - -byte val = 0; - -void loop() -{ - Wire.beginTransmission(44); // transmit to device #44 (0x2c) - // device address is specified in datasheet - Wire.send(0x00); // sends instruction byte - Wire.send(val); // sends potentiometer value byte - Wire.endTransmission(); // stop transmitting - - val++; // increment value - if(val == 64) // if reached 64th position (max) - { - val = 0; // start over from lowest value - } - delay(500); -} - diff --git a/core/libraries/Wire/examples/master_reader/master_reader.pde b/core/libraries/Wire/examples/master_reader/master_reader.pde deleted file mode 100644 index 1b139de..0000000 --- a/core/libraries/Wire/examples/master_reader/master_reader.pde +++ /dev/null @@ -1,29 +0,0 @@ -// Wire Master Reader -// by Nicholas Zambetti <http://www.zambetti.com> - -// Demonstrates use of the Wire library -// Reads data from an I2C/TWI slave device -// Refer to the "Wire Slave Sender" example for use with this - -// Created 29 March 2006 - -#include <Wire.h> - -void setup() -{ - Wire.begin(); // join i2c bus (address optional for master) - Serial.begin(9600); // start serial for output -} - -void loop() -{ - Wire.requestFrom(2, 6); // request 6 bytes from slave device #2 - - while(Wire.available()) // slave may send less than requested - { - char c = Wire.receive(); // receive a byte as character - Serial.print(c); // print the character - } - - delay(500); -} diff --git a/core/libraries/Wire/examples/master_writer/master_writer.pde b/core/libraries/Wire/examples/master_writer/master_writer.pde deleted file mode 100644 index d0ff9fa..0000000 --- a/core/libraries/Wire/examples/master_writer/master_writer.pde +++ /dev/null @@ -1,28 +0,0 @@ -// Wire Master Writer -// by Nicholas Zambetti <http://www.zambetti.com> - -// Demonstrates use of the Wire library -// Writes data to an I2C/TWI slave device -// Refer to the "Wire Slave Receiver" example for use with this - -// Created 29 March 2006 - -#include <Wire.h> - -void setup() -{ - Wire.begin(); // join i2c bus (address optional for master) -} - -byte x = 0; - -void loop() -{ - Wire.beginTransmission(4); // transmit to device #4 - Wire.send("x is "); // sends five bytes - Wire.send(x); // sends one byte - Wire.endTransmission(); // stop transmitting - - x++; - delay(500); -} diff --git a/core/libraries/Wire/examples/slave_receiver/slave_receiver.pde b/core/libraries/Wire/examples/slave_receiver/slave_receiver.pde deleted file mode 100644 index 53c86b5..0000000 --- a/core/libraries/Wire/examples/slave_receiver/slave_receiver.pde +++ /dev/null @@ -1,35 +0,0 @@ -// Wire Slave Receiver -// by Nicholas Zambetti <http://www.zambetti.com> - -// Demonstrates use of the Wire library -// Receives data as an I2C/TWI slave device -// Refer to the "Wire Master Writer" example for use with this - -// Created 29 March 2006 - -#include <Wire.h> - -void setup() -{ - Wire.begin(4); // join i2c bus with address #4 - Wire.onReceive(receiveEvent); // register event - Serial.begin(9600); // start serial for output -} - -void loop() -{ - delay(100); -} - -// function that executes whenever data is received from master -// this function is registered as an event, see setup() -void receiveEvent(int howMany) -{ - while(1 < Wire.available()) // loop through all but the last - { - char c = Wire.receive(); // receive byte as a character - Serial.print(c); // print the character - } - int x = Wire.receive(); // receive byte as an integer - Serial.println(x); // print the integer -} diff --git a/core/libraries/Wire/examples/slave_sender/slave_sender.pde b/core/libraries/Wire/examples/slave_sender/slave_sender.pde deleted file mode 100644 index f500644..0000000 --- a/core/libraries/Wire/examples/slave_sender/slave_sender.pde +++ /dev/null @@ -1,29 +0,0 @@ -// Wire Slave Sender -// by Nicholas Zambetti <http://www.zambetti.com> - -// Demonstrates use of the Wire library -// Sends data as an I2C/TWI slave device -// Refer to the "Wire Master Reader" example for use with this - -// Created 29 March 2006 - -#include <Wire.h> - -void setup() -{ - Wire.begin(2); // join i2c bus with address #2 - Wire.onRequest(requestEvent); // register event -} - -void loop() -{ - delay(100); -} - -// function that executes whenever data is requested by master -// this function is registered as an event, see setup() -void requestEvent() -{ - Wire.send("hello "); // respond with message of 6 bytes - // as expected by master -} diff --git a/core/libraries/Wire/keywords.txt b/core/libraries/Wire/keywords.txt deleted file mode 100644 index 12f129b..0000000 --- a/core/libraries/Wire/keywords.txt +++ /dev/null @@ -1,31 +0,0 @@ -####################################### -# Syntax Coloring Map For Wire -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -begin KEYWORD2 -beginTransmission KEYWORD2 -endTransmission KEYWORD2 -requestFrom KEYWORD2 -send KEYWORD2 -receive KEYWORD2 -onReceive KEYWORD2 -onRequest KEYWORD2 - -####################################### -# Instances (KEYWORD2) -####################################### - -Wire KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/core/libraries/Wire/utility/twi.c b/core/libraries/Wire/utility/twi.c deleted file mode 100644 index 2235b0b..0000000 --- a/core/libraries/Wire/utility/twi.c +++ /dev/null @@ -1,449 +0,0 @@ -/* - twi.c - TWI/I2C library for Wiring & Arduino - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include <math.h> -#include <stdlib.h> -#include <inttypes.h> -#include <avr/io.h> -#include <avr/interrupt.h> -#include <avr/signal.h> -#include <compat/twi.h> - -#ifndef cbi -#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) -#endif - -#ifndef sbi -#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - -#include "twi.h" - -static volatile uint8_t twi_state; -static uint8_t twi_slarw; - -static void (*twi_onSlaveTransmit)(void); -static void (*twi_onSlaveReceive)(uint8_t*, int); - -static uint8_t* twi_masterBuffer; -static volatile uint8_t twi_masterBufferIndex; -static uint8_t twi_masterBufferLength; - -static uint8_t* twi_txBuffer; -static volatile uint8_t twi_txBufferIndex; -static volatile uint8_t twi_txBufferLength; - -static uint8_t* twi_rxBuffer; -static volatile uint8_t twi_rxBufferIndex; - -/* - * Function twi_init - * Desc readys twi pins and sets twi bitrate - * Input none - * Output none - */ -void twi_init(void) -{ - // initialize state - twi_state = TWI_READY; - - #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) - // activate internal pull-ups for twi - // as per note from atmega8 manual pg167 - sbi(PORTC, 4); - sbi(PORTC, 5); - #else - // activate internal pull-ups for twi - // as per note from atmega128 manual pg204 - sbi(PORTD, 0); - sbi(PORTD, 1); - #endif - - // initialize twi prescaler and bit rate - cbi(TWSR, TWPS0); - cbi(TWSR, TWPS1); - TWBR = ((CPU_FREQ / TWI_FREQ) - 16) / 2; - - /* twi bit rate formula from atmega128 manual pg 204 - SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR)) - note: TWBR should be 10 or higher for master mode - It is 72 for a 16mhz Wiring board with 100kHz TWI */ - - // enable twi module, acks, and twi interrupt - TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); - - // allocate buffers - twi_masterBuffer = (uint8_t*) calloc(TWI_BUFFER_LENGTH, sizeof(uint8_t)); - twi_txBuffer = (uint8_t*) calloc(TWI_BUFFER_LENGTH, sizeof(uint8_t)); - twi_rxBuffer = (uint8_t*) calloc(TWI_BUFFER_LENGTH, sizeof(uint8_t)); -} - -/* - * Function twi_slaveInit - * Desc sets slave address and enables interrupt - * Input none - * Output none - */ -void twi_setAddress(uint8_t address) -{ - // set twi slave address (skip over TWGCE bit) - TWAR = address << 1; -} - -/* - * Function twi_readFrom - * Desc attempts to become twi bus master and read a - * series of bytes from a device on the bus - * Input address: 7bit i2c device address - * data: pointer to byte array - * length: number of bytes to read into array - * Output byte: 0 ok, 1 length too long for buffer - */ -uint8_t twi_readFrom(uint8_t address, uint8_t* data, uint8_t length) -{ - uint8_t i; - - // ensure data will fit into buffer - if(TWI_BUFFER_LENGTH < length){ - return 1; - } - - // wait until twi is ready, become master receiver - while(TWI_READY != twi_state){ - continue; - } - twi_state = TWI_MRX; - - // initialize buffer iteration vars - twi_masterBufferIndex = 0; - twi_masterBufferLength = length; - - // build sla+w, slave device address + w bit - twi_slarw = TW_READ; - twi_slarw |= address << 1; - - // send start condition - TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); - - // wait for read operation to complete - while(TWI_MRX == twi_state){ - continue; - } - - // copy twi buffer to data - for(i = 0; i < length; ++i){ - data[i] = twi_masterBuffer[i]; - } - - return 0; -} - -/* - * Function twi_writeTo - * Desc attempts to become twi bus master and write a - * series of bytes to a device on the bus - * Input address: 7bit i2c device address - * data: pointer to byte array - * length: number of bytes in array - * wait: boolean indicating to wait for write or not - * Output byte: 0 ok, 1 length too long for buffer - */ -uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait) -{ - uint8_t i; - - // ensure data will fit into buffer - if(TWI_BUFFER_LENGTH < length){ - return 1; - } - - // wait until twi is ready, become master transmitter - while(TWI_READY != twi_state){ - continue; - } - twi_state = TWI_MTX; - - // initialize buffer iteration vars - twi_masterBufferIndex = 0; - twi_masterBufferLength = length; - - // copy data to twi buffer - for(i = 0; i < length; ++i){ - twi_masterBuffer[i] = data[i]; - } - - // build sla+w, slave device address + w bit - twi_slarw = TW_WRITE; - twi_slarw |= address << 1; - - // send start condition - TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); - - // wait for write operation to complete - while(wait && (TWI_MTX == twi_state)){ - continue; - } - - return 0; -} - -/* - * Function twi_transmit - * Desc fills slave tx buffer with data - * must be called in slave tx event callback - * Input data: pointer to byte array - * length: number of bytes in array - * Output 1 length too long for buffer - * 2 not slave transmitter - * 0 ok - */ -uint8_t twi_transmit(uint8_t* data, uint8_t length) -{ - uint8_t i; - - // ensure data will fit into buffer - if(TWI_BUFFER_LENGTH < length){ - return 1; - } - - // ensure we are currently a slave transmitter - if(TWI_STX != twi_state){ - return 2; - } - - // set length and copy data into tx buffer - twi_txBufferLength = length; - for(i = 0; i < length; ++i){ - twi_txBuffer[i] = data[i]; - } - - return 0; -} - -/* - * Function twi_attachSlaveRxEvent - * Desc sets function called before a slave read operation - * Input function: callback function to use - * Output none - */ -void twi_attachSlaveRxEvent( void (*function)(uint8_t*, int) ) -{ - twi_onSlaveReceive = function; -} - -/* - * Function twi_attachSlaveTxEvent - * Desc sets function called before a slave write operation - * Input function: callback function to use - * Output none - */ -void twi_attachSlaveTxEvent( void (*function)(void) ) -{ - twi_onSlaveTransmit = function; -} - -/* - * Function twi_reply - * Desc sends byte or readys receive line - * Input ack: byte indicating to ack or to nack - * Output none - */ -void twi_reply(uint8_t ack) -{ - // transmit master read ready signal, with or without ack - if(ack){ - TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA); - }else{ - TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT); - } -} - -/* - * Function twi_stop - * Desc relinquishes bus master status - * Input none - * Output none - */ -void twi_stop(void) -{ - // send stop condition - TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO); - - // wait for stop condition to be exectued on bus - // TWINT is not set after a stop condition! - while(TWCR & _BV(TWSTO)){ - continue; - } - - // update twi state - twi_state = TWI_READY; -} - -/* - * Function twi_releaseBus - * Desc releases bus control - * Input none - * Output none - */ -void twi_releaseBus(void) -{ - // release bus - TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT); - - // update twi state - twi_state = TWI_READY; -} - -SIGNAL(SIG_2WIRE_SERIAL) -{ - switch(TW_STATUS){ - // All Master - case TW_START: // sent start condition - case TW_REP_START: // sent repeated start condition - // copy device address and r/w bit to output register and ack - TWDR = twi_slarw; - twi_reply(1); - break; - - // Master Transmitter - case TW_MT_SLA_ACK: // slave receiver acked address - case TW_MT_DATA_ACK: // slave receiver acked data - // if there is data to send, send it, otherwise stop - if(twi_masterBufferIndex < twi_masterBufferLength){ - // copy data to output register and ack - TWDR = twi_masterBuffer[twi_masterBufferIndex++]; - twi_reply(1); - }else{ - twi_stop(); - } - break; - case TW_MT_SLA_NACK: // address sent, nack received - case TW_MT_DATA_NACK: // data sent, nack received - twi_stop(); - break; - case TW_MT_ARB_LOST: // lost bus arbitration - twi_releaseBus(); - break; - - // Master Receiver - case TW_MR_DATA_ACK: // data received, ack sent - // put byte into buffer - twi_masterBuffer[twi_masterBufferIndex++] = TWDR; - case TW_MR_SLA_ACK: // address sent, ack received - // ack if more bytes are expected, otherwise nack - if(twi_masterBufferIndex < twi_masterBufferLength){ - twi_reply(1); - }else{ - twi_reply(0); - } - break; - case TW_MR_DATA_NACK: // data received, nack sent - // put final byte into buffer - twi_masterBuffer[twi_masterBufferIndex++] = TWDR; - case TW_MR_SLA_NACK: // address sent, nack received - twi_stop(); - break; - // TW_MR_ARB_LOST handled by TW_MT_ARB_LOST case - - // Slave Receiver - case TW_SR_SLA_ACK: // addressed, returned ack - case TW_SR_GCALL_ACK: // addressed generally, returned ack - case TW_SR_ARB_LOST_SLA_ACK: // lost arbitration, returned ack - case TW_SR_ARB_LOST_GCALL_ACK: // lost arbitration, returned ack - // enter slave receiver mode - twi_state = TWI_SRX; - // indicate that rx buffer can be overwritten and ack - twi_rxBufferIndex = 0; - twi_reply(1); - break; - case TW_SR_DATA_ACK: // data received, returned ack - case TW_SR_GCALL_DATA_ACK: // data received generally, returned ack - // if there is still room in the rx buffer - if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ - // put byte in buffer and ack - twi_rxBuffer[twi_rxBufferIndex++] = TWDR; - twi_reply(1); - }else{ - // otherwise nack - twi_reply(0); - } - break; - case TW_SR_STOP: // stop or repeated start condition received - // put a null char after data if there's room - if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ - twi_rxBuffer[twi_rxBufferIndex] = '\0'; - } - // callback to user defined callback - twi_onSlaveReceive(twi_rxBuffer, twi_rxBufferIndex); - // ack future responses - twi_reply(1); - // leave slave receiver state - twi_state = TWI_READY; - break; - case TW_SR_DATA_NACK: // data received, returned nack - case TW_SR_GCALL_DATA_NACK: // data received generally, returned nack - // nack back at master - twi_reply(0); - break; - - // Slave Transmitter - case TW_ST_SLA_ACK: // addressed, returned ack - case TW_ST_ARB_LOST_SLA_ACK: // arbitration lost, returned ack - // enter slave transmitter mode - twi_state = TWI_STX; - // ready the tx buffer index for iteration - twi_txBufferIndex = 0; - // set tx buffer length to be zero, to verify if user changes it - twi_txBufferLength = 0; - // request for txBuffer to be filled and length to be set - // note: user must call twi_transmit(bytes, length) to do this - twi_onSlaveTransmit(); - // if they didn't change buffer & length, initialize it - if(0 == twi_txBufferLength){ - twi_txBufferLength = 1; - twi_txBuffer[0] = 0x00; - } - // transmit first byte from buffer, fall - case TW_ST_DATA_ACK: // byte sent, ack returned - // copy data to output register - TWDR = twi_txBuffer[twi_txBufferIndex++]; - // if there is more to send, ack, otherwise nack - if(twi_txBufferIndex < twi_txBufferLength){ - twi_reply(1); - }else{ - twi_reply(0); - } - break; - case TW_ST_DATA_NACK: // received nack, we are done - case TW_ST_LAST_DATA: // received ack, but we are done already! - // ack future responses - twi_reply(1); - // leave slave receiver state - twi_state = TWI_READY; - break; - - // All - case TW_NO_INFO: // no state information - break; - case TW_BUS_ERROR: // bus error, illegal stop/start - twi_stop(); - break; - } -} - diff --git a/core/libraries/Wire/utility/twi.h b/core/libraries/Wire/utility/twi.h deleted file mode 100755 index 7ccbf5c..0000000 --- a/core/libraries/Wire/utility/twi.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - twi.h - TWI/I2C library for Wiring & Arduino - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef twi_h
-#define twi_h
- - #include <inttypes.h> - - //#define ATMEGA8 - - #ifndef CPU_FREQ
- #define CPU_FREQ 16000000L - #endif - - #ifndef TWI_FREQ
- #define TWI_FREQ 100000L - #endif - - #ifndef TWI_BUFFER_LENGTH - #define TWI_BUFFER_LENGTH 32 - #endif - - #define TWI_READY 0 - #define TWI_MRX 1 - #define TWI_MTX 2 - #define TWI_SRX 3 - #define TWI_STX 4 - - void twi_init(void); - void twi_setAddress(uint8_t); - uint8_t twi_readFrom(uint8_t, uint8_t*, uint8_t); - uint8_t twi_writeTo(uint8_t, uint8_t*, uint8_t, uint8_t); - uint8_t twi_transmit(uint8_t*, uint8_t); - void twi_attachSlaveRxEvent( void (*)(uint8_t*, int) ); - void twi_attachSlaveTxEvent( void (*)(void) ); - void twi_reply(uint8_t); - void twi_stop(void); - void twi_releaseBus(void);
-
-#endif - |