![]() |
Changing I/O Pins
I've got an Arduino UNO with a seeedstudio shield. I've been attempting to use the LCD that comes with the kit by changing the LCD pins to
D10 -DI/RS D12 -ENABLE 13 (A0) - DB4 14 (A1) - DB5 15 (A2) - DB6 16 (A3) - DB7 This is the pinout of the shield, I'm plugging in the LCD to BUS2. So far, I've been unable to get the LCD to work at all. I changed the following code to this... Code:
void LCD::tickleEnable() { |
Doh! Found the pin problem with the previous code chunk, but still not working... ugh!
void LCD::tickleEnable() { // send a pulse to enable PB4 PORTB |= (1 << 4); delayMicroseconds2(1); // pause 1 ms according to datasheet PORTB &= ~(1 << 4); delayMicroseconds2(1); // pause 1 ms according to datasheet } void LCD::cmdWriteSet() { //set enable (PB4) low and DI(PB2) low PORTB &= ~(1 << 4); delayMicroseconds2(1); // pause 1 ms according to datasheet PORTB &= ~(1 << 2); } byte LCD::pushNibble(byte value) { //db7=PC2, db6=PC1, db5 = PC0, db4 = PB5 value & 128 ? PORTB |= (1 << 5) : PORTB &= ~(1 << 5); value <<= 1; value & 128 ? PORTC |= (1 << 0) : PORTC &= ~(1 << 0); value <<= 1; value & 128 ? PORTC |= (1 << 1) : PORTC &= ~(1 << 1); value <<= 1; value & 128 ? PORTC |= (1 << 2) : PORTC &= ~(1 << 2); value <<= 1; return value; } void LCD::LcdCommandWrite(byte value) { value = pushNibble(value); cmdWriteSet(); tickleEnable(); value = pushNibble(value); cmdWriteSet(); tickleEnable(); delay2(5); } void LCD::LcdDataWrite(byte value) { PORTB |= (1 << 4); //di on pb4 value = pushNibble(value); tickleEnable(); value = pushNibble(value); tickleEnable(); delay2(5); } |
All times are GMT -4. The time now is 11:30 PM. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Content Relevant URLs by vBSEO 3.5.2
All content copyright EcoModder.com