Help with shrinking program on to Tiny85

Hi all,

I need a little help.

I have written a simple little sketch involving 3 LED's and A Push Button.

It works fine on the Bread Board hooked up to the Arduino UNO. But when I put the code on a atTiny85 it wont run. I know I am programming the chip right. I have tested it with the Blink sketch.

I think it has something to do with the way I have it set up. I noticed pin 2 on the Arduino when sent as Analog input give out about 2 vdc, Pin 2(3) on the Tiny85 puts out 5. Not sure if I am on the right track with that. all so please keep in mind I am very new to all this, just over a week old.

Attached is my code.

Thanks

/*
 *  Night Lite, final version
 */

int switchPin = 3;              // switch is connected to pin 3 (pin 2 on Arduino)  
int led1Pin = 0;                // Blue LED on Pin 8 on Arduino
int led2Pin = 1;                // Green LED on Pin 9 on Arduino
int led3Pin = 2;               // Red LED on Pin 10  on Arduino

int val;                        // variable for reading the pin status
int val2;                       // variable for reading the delayed status
int buttonState;                // variable to hold the button state

int lightMode = 0;              // What mode is the light in?

void setup() {
  pinMode(switchPin, INPUT);    // Set the switch pin as input

  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);


  Serial.begin(9600);           // Set up serial communication at 9600bps
  buttonState = digitalRead(switchPin);   // read the initial state
}

void loop(){
  val = digitalRead(switchPin);      // read input value and store it in val
  delay(10);                         // 10 milliseconds is a good amount of time
  val2 = digitalRead(switchPin);     // read the input again to check for bounces
  if (val == val2) {                 // make sure we got 2 consistant readings!
    if (val != buttonState) {          // the button state has changed!
      if (val == LOW) {                // check if the button is pressed
        if (lightMode == 0) {          // if its off
          lightMode = 1;               // turn lights on!
        } 
        else {
          if (lightMode == 1) {        // if its all-on
            lightMode = 2;             // make it blink!
          } 
          else {
            if (lightMode == 2) {      // if its blinking
              lightMode = 3;           // make it wave!
            } 
            else {
              if (lightMode == 3) { //  if its waving, 
                lightMode = 4; 
              }
              else{
                if (lightMode == 4){
                  lightMode =0;
                } // turn light off!
              }
            }
          }
        }
      }
      buttonState = val;                 // save the new state in our variable
    }

    // Now do whatever the lightMode indicates
    if (lightMode == 0) { // all-off
      digitalWrite(led1Pin, LOW);
      digitalWrite(led2Pin, LOW);
      digitalWrite(led3Pin, LOW);

    }

    if (lightMode == 1) { // Blue On
      digitalWrite(led1Pin, HIGH);
      digitalWrite(led2Pin, LOW);
      digitalWrite(led3Pin, LOW);
    }

    if (lightMode == 2) { // Blue off, Green On
      digitalWrite(led1Pin, LOW);
      digitalWrite(led2Pin, HIGH);
      digitalWrite(led1Pin, LOW);

    }
    if (lightMode == 3)  { // Red On Green Off
      digitalWrite(led1Pin, LOW);
      digitalWrite(led2Pin, LOW);
      digitalWrite(led3Pin, HIGH);
    }   
    if (lightMode == 4) { // Flame
      analogWrite(led1Pin, random(120)+135);
      analogWrite(led2Pin, random(120)+135);
      analogWrite(led3Pin, random(120)+135);
      delay(random(100));

    } 
  }
}

Hi,

Just to check your connections,
int switchPin = 3; // leg 3 on the ATTiny85
int led1Pin = 0; // leg 5
int led2Pin = 1; // leg 6
int led3Pin = 2; // leg 7 but it's NOT PWM capable, so your analogWrites won't work; suggest you move this one to leg 2 or 3 (D3 or D4 if you still need to analogWrite)

Cheers ! Geoff

Cheers ! Geoff

The image I have shows pin 3 on leg two.

Leg 1 Reset
Leg 2 PIN 3( Analog input 3)
Leg 3 PIN 4( Analog input 2)
Leg 4 GND
Leg 5 PIN 0 (PWM)
Leg 6 PIN 3 (PWM)
Leg 7 PIN 2 (Analog Input 1)
Leg 8 VCC

strykeroz:
int switchPin = 3; // leg 3 on the ATTiny85

85 Sketch_schem.jpg

Sorry that was a typo. You are correct.

Thanks,

did you take a look at my lay out ?

Just now, yes.

So the PWM remark still stands. Suggest using the internal pull-up on your switch pin to simplify, and swap switch and LED pins so you get PWM for analog write on that 3rd LED.

In around an hour if you like I'll be able to load this up on an ATTiny85 if you don't find what's breaking it first.

Cheers! Geoff

You need to lose this too...

  Serial.begin(9600);           // Set up serial communication at 9600bps

Cheers! Geoff

That would be great if you could do that,

strykeroz:
In around an hour if you like I'll be able to load this up on an ATTiny85 if you don't find what's breaking it first.

Cheers! Geoff

Not sure how to do this. To tell you the truth I am not even sure what it means :blush:

strykeroz:
Suggest using the internal pull-up on your switch pin to simplify,

Cheers! Geoff

No need to do that to fix anything, but a suggestion. Simply setMode to output as you would, but then digitalWrite that pin to high. Wire the pin to yor switch then ground. When not pressed the pin will digitalread high, and when pressed it will be low. But it means your switch circuit will be much simplified.

Regardless it is working the way you have it so I think just move LED3 to a pin that supports PWM, and lose the initiation of Serial...and i think it should run as it did for you on the arduino.

Geoff

There are only 2 PWM pins PIN 0 (5)
and PIN 1 (6)

I removed this line, and reprogrammed the 85 and it working some what.

But if your still willing to take a shot at I would deeply appreciate it.

strykeroz:
You need to lose this too...

  Serial.begin(9600);           // Set up serial communication at 9600bps

Cheers! Geoff

kculm:
There are only 2 PWM pins PIN 0 (5)
and PIN 1 (6)

This is a common misconception. ATTiny85 has 4 pins capable of PWM, with two sharing the same clock source. I routinely use this little uC to run RGB LEDs.

Sorry still stuck on this iPad or would post an example.

Also, it is possible to drive any of the pins by software PWM if the application is lighting or anything else where accuracy or high frequencies aren't a requirement.

Cheers! Geoff

I am sorry if I am being a pain, but can you list the 4 PWM pins.

I am still learning and you are helping me a lot. I have a long way to tho...

Thanks

Not a problem at all. Sorry I type better on my PC too :slight_smile:

Checkout the pins on this diagram http://www.akafugu.jp/images/microcontroller-reference-sheet.png

It is only those two PWM pins on ATTiny13.

Cheers! Geoff

That is much diffident then the one I have been going by;

Take a look

attiny45_85pinout1.png

Here's another thread worth reading on the 3 PWM question: here

Cheers! Geoff

I put the switch on pin 2 and the last LED on 3, but no go.

I am not liking this new hobby. When does it start to get fun.

I am using this project as part of a Night lite I am make, I planed on staring the carving tomorrow.

strykeroz:

kculm:
There are only 2 PWM pins PIN 0 (5)
and PIN 1 (6)

This is a common misconception. ATTiny85 has 4 pins capable of PWM, with two sharing the same clock source. I routinely use this little uC to run RGB LEDs.

Sorry still stuck on this iPad or would post an example.

Also, it is possible to drive any of the pins by software PWM if the application is lighting or anything else where accuracy or high frequencies aren't a requirement.

Cheers! Geoff

Really! if i had of known this 2 weeks ago, you'd have saved me about 30 bucks! :frowning:

Which pins use PWM on the attiny85, i'll update my schematic - Thanks :slight_smile:

Geoff,

I moved the last LED off of pin 2 (7) and onto pin pin 4 (3). Works

Now I got to figure out the delay on the last set of instruction ( Flame look).

Let me know how it looks on yours.

Thanks.

PS.
I have been stuck on this all Day. thanks for the heads up on the PWM pins.