Instructables

ArduinoISP does not support PORT Output commands?

I was planning to make a drum machine that only requires two pins on the Arduino and so, wanted to use an AtTiny85v but it gives me errors like:

'DDRD' was not declared in this scope

ArduinoBeats.cpp: In function 'void setup()':
ArduinoBeats:97: error: 'DDRD' was not declared in this scope
ArduinoBeats.cpp: In function 'void playKick()':
ArduinoBeats:288: error: 'PORTD' was not declared in this scope
ArduinoBeats:294: error: 'PORTD' was not declared in this scope
ArduinoBeats.cpp: In function 'void playSnare()':
ArduinoBeats:304: error: 'PORTD' was not declared in this scope
ArduinoBeats:310: error: 'PORTD' was not declared in this scope
ArduinoBeats.cpp: In function 'void playHat()':
ArduinoBeats:320: error: 'PORTD' was not declared in this scope
ArduinoBeats:326: error: 'PORTD' was not declared in this scope
ArduinoBeats.cpp: In function 'void playCrash()':
ArduinoBeats:335: error: 'PORTD' was not declared in this scope
ArduinoBeats:341: error: 'PORTD' was not declared in this scope

I had named the sketch ArduinoBeats so that explains all the ArduinoBeats stuff. Does anybody know how to add this command to the AtTiny library? Any help would be appreciated.






Here is the code from Little Scale:


/* Arduino Beats

by Sebastian Tomczak

6 April 2008

*/


// Working Variables


byte byteA;

byte byteB;

int delayTime = 100;

int barLength = 16;


// Beats


byte bar1[] = {

1, 0, 1, 0, 2, 4, 1, 2, 1, 0, 1, 0, 2, 1, 3, 0

};


byte bar2[] = {

1, 0, 1, 0, 2, 0, 1, 2, 1, 0, 1, 0, 2, 2, 2, 2

};


byte bar3[] = {

1, 3, 1, 3, 2, 3, 1, 2, 1, 3, 1, 2, 1, 1, 4, 4

};


byte bar4[] = {

1, 0, 1, 0, 2, 2, 0, 2, 2, 1, 1, 4, 1, 1, 4, 4

};



// Samples


byte kick[] =

{

127, 80, 42, 5, 165, 242, 241, 233, 128, 73, 48, 22, 127, 69, 55, 113, 151, 183, 209, 217, 223, 228, 233, 215, 161, 117, 91, 76, 65, 49, 37, 31, 31, 48, 83, 120, 146, 166, 183, 198, 206, 210, 209, 199, 178, 145, 111, 88, 78, 73, 69, 67, 72, 80, 88, 97, 109, 124, 137, 150, 163, 171, 174, 172, 168, 160, 144, 125, 114, 110, 108, 104, 104, 106, 109, 110, 112, 117, 124, 129, 135, 142, 145, 145, 143, 140, 137, 132, 128, 125, 122, 119, 118, 119, 119, 119, 118, 118, 120, 124, 126, 129, 132, 135, 137, 137, 135, 132, 131, 130, 129, 128, 126, 126, 124, 123, 121, 120, 120, 122, 123, 124, 126, 128, 129, 130, 130, 131, 131, 131, 130, 130, 130, 129, 129, 128, 126, 125, 125, 124, 124, 124, 124, 125, 126, 126, 128, 128, 128, 129, 129, 129, 129, 129, 128, 128, 128, 128, 126, 126, 126, 126, 126, 126, 126, 126, 126, 128, 127, 126, 128, 128, 128, 128, 128, 128, 128, 128, 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126

};


byte snare[] =

{

127, 215, 65, 212, 56, 102, 135, 122, 51, 201, 220, 46, 175, 80, 152, 95, 123, 116, 184, 155, 59, 122, 100, 161, 143, 173, 101, 155, 97, 73, 112, 98, 176, 96, 140, 77, 134, 109, 132, 149, 112, 149, 97, 161, 98, 151, 98, 155, 149, 112, 157, 103, 133, 106, 167, 97, 166, 108, 129, 124, 136, 146, 124, 136, 129, 150, 94, 130, 105, 141, 146, 128, 129, 99, 150, 121, 141, 99, 142, 116, 131, 114, 118, 143, 127, 143, 115, 144, 120, 137, 109, 129, 131, 139, 129, 113, 144, 119, 145, 117, 135, 129, 134, 136, 124, 130, 130, 139, 121, 136, 121, 132, 128, 127, 126, 122, 130, 126, 138, 120, 136, 122, 131, 123, 130, 128, 127, 128, 118, 132, 125, 131, 122, 131, 125, 131, 122, 126, 128, 126, 129, 121, 129, 123, 132, 129, 127, 131, 123, 128, 125, 130, 123, 131, 123, 128, 131, 129, 128, 126, 125, 124, 131, 121, 124, 129, 130, 126, 124, 126, 127, 130, 125, 126, 128, 126, 128, 126, 126, 126, 126, 125, 128, 126, 126, 126, 126, 126, 126, 125, 128, 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 126, 128, 126, 127, 126, 128, 125, 127, 128, 128, 126, 126, 128, 126, 126, 128, 128, 128, 128, 128, 126, 128, 126, 126, 128, 128, 126, 126, 128, 128, 126, 126, 127, 126, 128, 126, 126, 128, 128, 128, 126, 126, 126, 128, 128, 126, 126, 126, 128, 128, 126, 128, 128, 126, 126

};


byte hat[] =


{

127, 128, 225, 217, 99, 38, 61, 153, 152, 144, 133, 73, 122, 144, 65, 188, 87, 170, 164, 111, 122, 151, 114, 88, 174, 77, 140, 92, 122, 141, 156, 124, 121, 123, 126, 133, 132, 139, 119, 120, 127, 141, 130, 122, 129, 127, 132, 121, 139, 118, 130, 131, 129, 132, 130, 134, 126, 128, 130, 126, 122, 132, 129, 127, 131, 126, 128, 127, 126, 125, 127, 125, 128, 125, 128, 128, 127, 127, 126, 127, 128, 128, 128, 127, 127, 127, 127, 127, 128, 127, 127, 126, 127, 127, 128, 127, 128, 126, 127, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 126, 126, 128, 127, 126, 127, 126, 127, 127, 126, 127, 126, 127, 127, 127, 127, 127, 126, 127, 127, 127, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 127, 127, 127, 126, 127, 127, 127, 126, 127, 127, 126, 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126, 127, 127, 126, 127, 126, 126, 127, 126, 127, 126, 126, 126, 126, 126, 126, 126, 127, 127, 126, 127, 127, 127, 127, 126, 126, 127, 127, 127, 126, 127, 126, 127, 127, 127, 127, 127, 126, 126, 127, 127, 126, 127, 127, 127, 127, 126, 127, 127, 127, 127, 127, 127, 127, 127

};


byte crash[] =


{

127, 128, 225, 217, 99, 38, 61, 153, 152, 144, 133, 73, 122, 144, 65, 188, 87, 170, 164, 111, 122, 151, 114, 88, 174, 77, 140, 92, 122, 141, 156, 124, 121, 123, 126, 133, 132, 139, 119, 120, 127, 141, 130, 122, 129, 127, 132, 121, 139, 118, 130, 131, 129, 132, 130, 134, 126, 128, 130, 126, 122, 132, 129, 127, 131, 126, 128, 127, 126, 125, 127, 125, 128, 125, 128, 128, 127, 127, 126, 127, 128, 128, 128, 127, 127, 127, 127, 127, 128, 127, 127, 126, 127, 127, 128, 127, 128, 126, 127, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 126, 126, 128, 127, 126, 127, 126, 127, 127, 126, 127, 126, 127, 127, 127, 127, 127, 126, 127, 127, 127, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 127, 127, 127, 126, 127, 127, 127, 126, 127, 127, 126, 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126, 127, 127, 126, 127, 126, 126, 127, 126, 127, 126, 126, 126, 126, 126, 126, 126, 127, 127, 126, 127, 127, 127, 127, 126, 126, 127, 127, 127, 126, 127, 126, 127, 127, 127, 127, 127, 126, 126, 127, 127, 126, 127, 127, 127, 127, 126, 127, 127, 127, 127, 127, 127, 127, 127

};



void setup() {

DDRD = DDRD | B11111100; //In attempt to try and use an ATtiny, I got an error here

}

void loop() {



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar2[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar3[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar2[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar1[j]);

}



for(int j = 0; j < barLength; j ++) {

playBeat(bar4[j]);

}




}



// Playback Functions


void playBeat(byte beat) {

if(beat == 0) {

for(int i = 0; i < 256; i ++) {

delayMicroseconds(analogRead(0) + 1);

}

}



else if(beat == 1) {

playKick();

}

else if(beat == 2) {

playSnare();

}

else if(beat == 3) {

playHat();

}

else if(beat == 4) {

playCrash();

}

delay(delayTime);

}


void playKick() {

for(int i = 0; i < 256; i ++) {

PORTD = kick[i];

delayMicroseconds(analogRead(0) + 1);

}

PORTD = 127;

}



void playSnare() {

for(int i = 0; i < 256; i ++) {

PORTD = snare[i];

delayMicroseconds(analogRead(0) + 1);

}

PORTD = 127;

}



void playHat() {

for(int i = 0; i < 256; i ++) {

PORTD = hat[i];

delayMicroseconds(analogRead(0) + 1);

}

PORTD = 127;

}


void playCrash() {

for(int i = 0; i < 256; i ++) {

PORTD = crash[i];

delayMicroseconds(analogRead(0) + 1);

}

PORTD = 127;

}

Picture of ArduinoISP does not support PORT Output commands?
Higgs Boson2 years ago
How long was the compiled sketch? How many bits?
maewert2 years ago
I think the ATTiny85v only has a 6 pin PORTB and no PORTD. Your code won't work as you are trying to output 8 bits to a 6 bit port... wonder what you attached the output pins to??

Best Wishes
blinkyblinky (author)  maewert2 years ago
I have tried all the pins but they do not work.
blinkyblinky (author)  maewert2 years ago
I din't try all of them but I will try them later. I will get back on how it works out.
When it says something hasn't been declared it means you never defined that variable. You never define DDRD as anything it just suddenly appears in the setup. In needs to be defined with an int. So put int in front of it and your good to go. The same goes for your PORTD.
blinkyblinky (author)  mpilchfamily2 years ago
If I am not mistaken then it is not that simple.

However I did try it and it didn't work.
If the code compiled and uploaded then your down to troubleshooting the code and hardware to see where its not working and why.

Not sure what your trying to accomplish with the code since you don't define any pins that the arduino should be reading from or writing to. If its suppose to play a tune you haven't even defined an output for a speaker.

All your doing is delaying a read from analog pin 1 and thats it. Seems like you still got some hardware to get connected and use in your code if you want to make a drum machine.
blinkyblinky (author)  mpilchfamily2 years ago
It already works on the Arduino, I just need it to work on the AtTiny.
Have you installed the arduino boot loaded onto the AtTiny? Without it the IDE can't interface with the attiny.
blinkyblinky (author)  mpilchfamily2 years ago
I have a shield from randofo.

I have programmed Arduino codes on it.

I am assuming that it should have the bootloader.
blinkyblinky (author)  mpilchfamily2 years ago
I forgot to add it didn't work in hardware. Software compiled properly.
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!