help with alarm code

hi all…

i just foun this code but maybe im not editing it right…

what i want with the code its ust to simple post a tweet every time my led turns high…

but have many troubles, for example the code just post when i open serial monitor, second when i change the code for the led input, then it doesnt post anything,
and last, its that twitter does not acept my msg cos it said its the same tweet, so how can i change that

#include <SPI.h> // needed in Arduino 0019 or later
#include <Ethernet.h>
#include <Twitter.h>

// The includion of EthernetDNS is not needed in Arduino IDE 1.0 or later.
// Please uncomment below in Arduino IDE 0022 or earlier.
//#include <EthernetDNS.h>

const int ledPin = 3;
int ledState = LOW;

// Ethernet Shield Settings
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// If you don't specify the IP address, DHCP is used(only in Arduino 1.0 or later).
byte ip[] = { 192, 168, 2, 250 };

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("1220261654-BPUYlMFTyfs5ooSFSA62C57Ujeqnr9hdn7PARZm");

// Message to post


void setup()
{
  
  pinMode(ledPin, INPUT); 
  delay(1000);
  Ethernet.begin(mac);
  // or you can use DHCP for autoomatic IP address configuration.
  // Ethernet.begin(mac);
  Serial.begin(9600);
  
  Serial.println("connecting ...");
  
}

void loop()
{
  
  Serial.println(ledState);
  char msg[]="que odes";
  if (ledState == HIGH)
  {
  
  int cont=0;
  delay(1000);
  if (twitter.post(msg)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
    
    
  }
  }
}
  if (ledState == HIGH)
    ...

Your code never reads or changes ledState.

so if i attacht it to an interrupt and read the rising, the arduino will know that, i see that error, thanks, but how can i change that arduino knwos that state and post the msg without open the serial monitor???

Where is the attacthinterrupt at I see nothing for setting up or handling an external interrupt.

i still have no posted the changes that NIck suggested....

In setup you need to attachinterrupt with some parameters. See link for learn to use that function.
http://arduino.cc/en/Reference/AttachInterrupt

i know how to do that, the problem is that i cant change how to post a msg without opening the serial port

Why do you think you need an interrupt?

copachino:
i still have no posted the changes that NIck suggested....

Huh? Where is your changed code?

Try this out there is no debounce of the pin Interrupt 0 is digital pin 2 on the Uno baord

#include <SPI.h> // needed in Arduino 0019 or later
#include <Ethernet.h>
#include <Twitter.h>

// The includion of EthernetDNS is not needed in Arduino IDE 1.0 or later.
// Please uncomment below in Arduino IDE 0022 or earlier.
//#include <EthernetDNS.h>

//const int ledPin = 3;
int ledState = LOW;

// Ethernet Shield Settings
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// If you don't specify the IP address, DHCP is used(only in Arduino 1.0 or later).
byte ip[] = { 192, 168, 2, 250 };

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("1220261654-BPUYlMFTyfs5ooSFSA62C57Ujeqnr9hdn7PARZm");
// you shouldn't post your token we could post on your Twitter account with this info...

// Message to post


void setup()
{
  digitalWrite(2, HIGH); //turn on internall pullup resistor
  attachInterrupt(0, ExtInt0Fall, FALLING); // there is no debouce of this pin
  delay(1000);
  Ethernet.begin(mac);
  // or you can use DHCP for autoomatic IP address configuration.
  // Ethernet.begin(mac);
  Serial.begin(9600);
  Serial.println("connecting ...");
  char msg[]="que odes";
}

void loop()
{
  if (ledState == HIGH)
    {
      ledState = LOW;
      int cont=0; // ? what is this for??
      Serial.println("High now");   
      delay(1000);
      if (twitter.post(msg)) 
        {
          // Specify &Serial to output received response to Serial.
          // If no output is required, you can just omit the argument, e.g.
          // int status = twitter.wait();
          int status = twitter.wait(&Serial);
          if (status == 200) 
            {
              Serial.println("OK.");
            }
          else
            {
              Serial.print("failed : code ");
              Serial.println(status);
            }
        }
      else 
        Serial.println("connection failed.");
    }
}

void ExtInt0Fall()
{
  ledState = HIGH;
}

Better read this:

There is no debounce because you haven't coded in a debounce.

Nick I made that for him to try, when it posts to Twitter that will take a little bit of time

Oh I see, sorry. I mistook you for the OP. :slight_smile:

You are right, the sending will debounce.

Frisky:
Try this out there is no debounce of the pin Interrupt 0 is digital pin 2 on the Uno baord

#include <SPI.h> // needed in Arduino 0019 or later

#include <Ethernet.h>
#include <Twitter.h>

// The includion of EthernetDNS is not needed in Arduino IDE 1.0 or later.
// Please uncomment below in Arduino IDE 0022 or earlier.
//#include <EthernetDNS.h>

//const int ledPin = 3;
int ledState = LOW;

// Ethernet Shield Settings
byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// If you don’t specify the IP address, DHCP is used(only in Arduino 1.0 or later).
byte ip = { 192, 168, 2, 250 };

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter(“1220261654-BPUYlMFTyfs5ooSFSA62C57Ujeqnr9hdn7PARZm”);
// you shouldn’t post your token we could post on your Twitter account with this info…

// Message to post

void setup()
{
  digitalWrite(2, HIGH); //turn on internall pullup resistor
  attachInterrupt(0, ExtInt0Fall, FALLING); // there is no debouce of this pin
  delay(1000);
  Ethernet.begin(mac);
  // or you can use DHCP for autoomatic IP address configuration.
  // Ethernet.begin(mac);
  Serial.begin(9600);
  Serial.println(“connecting …”);
  char msg=“que odes”;
}

void loop()
{
  if (ledState == HIGH)
    {
      ledState = LOW;//this turns the led off???
      int cont=0; // ? what is this for??//this was meant tobe a counter to print it with the msg so the msg could change and twitter did not give error
      Serial.println(“High now”);   
      delay(1000);
      if (twitter.post(msg))
        {
          // Specify &Serial to output received response to Serial.
          // If no output is required, you can just omit the argument, e.g.
          // int status = twitter.wait();
          int status = twitter.wait(&Serial);
          if (status == 200)
            {
              Serial.println(“OK.”);
            }
          else
            {
              Serial.print("failed : code ");
              Serial.println(status);
            }
        }
      else
        Serial.println(“connection failed.”);
    }
}

void ExtInt0Fall()
{
  ledState = HIGH;
}

the problem im still trapped its that still the code post only when i open the serial monitor in the IDE, only that this time it waits untill the led turns on… but its possible to change that i don need to open the serial port???.. i dont need any status msg on serial monitor, i mean the arduino will never be connected to a computer to run this program…

  char msg[]="que odes";

A local variable that immediately goes out of scope. How useful is that?

the problem im still trapped its that still the code post only when i open the serial monitor in the IDE, only that this time it waits untill the led turns on.... but its possible to change that i don need to open the serial port???... i dont need any status msg on serial monitor, i mean the arduino will never be connected to a computer to run this program.....

The problem is that you don't use capital letters properly, and don't understand that ONE period or question mark is enough.

There is no reason that you should have to open the serial monitor. If you don't want to, then the Serial methods don't need to be present. Remove them.

Use LEDs to determine where you are getting to in the code.

thanks everyone for the help, i will try more a little late.

And for the variable char msg.... the lib of this code has tobe declared as char.... maybe i can post millis()... but i will have to study that

The code posted in reply #9, and quoted in reply #13, that I was referring to, won't even compile, since msg is declared in the wrong place.

int ledState = LOW;

...

  attachInterrupt(0, ExtInt0Fall, FALLING); // there is no debouce of this pin

 ...

void ExtInt0Fall()
{
  ledState = HIGH;
}

Variables shared between an ISR and main code should should be declared volatile.

http://www.gammon.com.au/interrupts

Frisky:
Nick I made that for him to try, when it posts to Twitter that will take a little bit of time

void loop()
{
  if (ledState == HIGH)
    {
      ledState = LOW;

If the switch bounces, ledState will be set high again, despite how long sending the twitter takes, so that debounce won't work.

I thought you where posting that message to Twitter? Why would you need the serial monitor then?