Show Posts
Pages: 1 2 [3] 4 5 ... 19
31  Using Arduino / Programming Questions / Re: Updating data displayed only if it changes? on: July 01, 2013, 06:18:23 am
Isn't it a matter of
Code:
if (new_data != old_data)
{
  // print new_data
  // old_data = new_data
}
? ? ?

That's basically what my second code example above does.  I ended up just making a boolean that keeps track of which of two states the system can be in.  If the state is 0 and the boolean shows that we are displaying state as 1 then we update the display and vice versa.  Seems to work fine for me.
32  Using Arduino / Project Guidance / Re: I'm out of memory? Is the next thing up the Mega644P? on: June 30, 2013, 06:52:23 pm
Oy......who's right?  Simpson_jr says yes and Oric_dan says maybe if I am willing to do some extra stuff.  I guess either way it can work....it may just not be a turn key solution.  I'll pick up the PDIP version of the 644 and 1284 and breadboard it.  Maybe it will work out of the box and if not perhaps it presents a good learning experience for me on some of the behind the scenes stuff in the libraries.  Thanks guys!
33  Using Arduino / Programming Questions / Re: Updating data displayed only if it changes? on: June 30, 2013, 06:46:26 pm
So basically it doesn't matter unless I need my program to run faster.  It does get a bit behind when reading serial information coming in so I guess I will put the test in there to see if I need to update the display or not.
34  Using Arduino / Programming Questions / Updating data displayed only if it changes? on: June 30, 2013, 10:24:32 am
I've always had this question in my mind.  When sending out data to be displayed on an LCD display (or in my case an OLED display) I have always wondered if there is anything wrong with hammering the registers repeatedly with the same data over and over again.  Example:

Code:
void loop
{
  if(digitalRead(button))
  {
    display.clearDisplay();
    display.setCursor(0,0);
    display.print("Not Pressed");
    display.display();
  }
  else
  {
    display.clearDisplay();
    display.setCursor(0,0);
    display.print("Pressed");
    display.display();
  }
}

I hate that I am sending the same thing to the display over and over again when really I just need to send it once when the button is pressed and once when the button is released.  Because of this I end up doing something that feels convoluted like:

Code:
boolean last_button_position = false;
void loop
{
  if(digitalRead(button) && !last_button_position)
  {
    display.clearDisplay();
    display.setCursor(0,0);
    display.print("Not Pressed");
    display.display();
    last_button_position = true;
  }
 
  if(!digitalRead(button) && last_button_position)
  {
    display.clearDisplay();
    display.setCursor(0,0);
    display.print("Pressed");
    display.display();
    last_button_position = false;
  }
}

Now given my propensity to always find the absolute worst way to do something programmatically, I can only assume that this is possibly the worst way to do this.  What do you guys do to avoid constantly sending the same data to be displayed over and over again?

35  Using Arduino / Programming Questions / Re: How do i implement button state of change in this sketch on: June 30, 2013, 09:15:59 am
Just spitballing here, but would something like this work for you?  I haven't tested it but it should toggle On_Off with each button press and release.  Obviously bounce would be an issue but there are plenty of debounce examples out there.  I guess you could also have a missed press if you release at the exact moment after it tests for buttonPress and last_button_press and before it updates last_button_press with the buttonPress value.  I like to use interrupts for this type of thing but I know a lot of people shy away from that.

Code:
boolean On_Off = true;
boolean buttonState = true;
boolean last_button_state = true;

//check to see if the button was pressed and released
//it will detect the change from low to high when the
//button is released
buttonState = digitalRead(buttonPin);
if(buttonState == true && last_button_state == false) On_Off = !On_Off;
last_button_state = buttonState;

//and then test On_Off to decide whether to run your code of not
if(On_Off)
{
  //do all of your stuff here
}
36  Using Arduino / Project Guidance / Re: I'm out of memory? Is the next thing up the Mega644P? on: June 30, 2013, 08:24:54 am
Thanks to both of you!  Is the Arduino IDE support for the 1284 the same as for the 644?

WildBill, the code is fairly convoluted (as stated before, I don't know what I am doing), but I have posted it up on Github (mainly as a back up for me in case my macbook craps out).  It would be great if you would care to work your way through it to see if there are any major savings to be had.  Memory wise I am fine until I add the SD library.  I know there are some trimmed down versions but it would still be close and I would just like a bigger pool to swim in so that I can add more features.

It is located here:

https://github.com/jerseyguy1996/Leslie_GPS_Breadboard
37  Using Arduino / Project Guidance / I'm out of memory? Is the next thing up the Mega644P? on: June 30, 2013, 07:21:12 am
Well I've come to the sad realization that my code is just too long for the Mega328.  I am positive that part of this is just that I don't code very efficiently (because I don't know what the heck I am doing) but going through all of my variables, even if I put some of the constant data (strings and such) in progmem I am still going to be constrained and it won't allow for any additional features on my program.  I'm thinking the Mega644P may be a good next step up since it appears that the good folks at Sanguino have added support for this uC in the arduino IDE.  It doubles the amount of flash and sram relative to the 328.  It also comes in a fairly reasonably sized package (I don't need something in a massive 100 pin package).  Any thoughts on using the 644P as a reasonable next step up from the 328?
38  Using Arduino / Programming Questions / Re: Attachinterrupt question on: June 27, 2013, 08:05:18 pm
Great link!  That helps a lot!
39  Using Arduino / Programming Questions / Re: Attachinterrupt question on: June 27, 2013, 06:27:50 am
Great explanations guys!  Thanks!  I wanted to use the timer interrupts on the Atmega but there may be 2 or 3 functions that could run on one timer interrupt, based on the current state of the machine.
40  Using Arduino / Programming Questions / Attachinterrupt question on: June 26, 2013, 08:03:38 pm
Reading the documentation in the library reference it seems that this is allowed:

Code:
attachInterrupt(0, myISR, LOW);

//do something here


detachInterrupt(0);
attachInterrupt(0, myOtherISR, LOW);

//do other stuff

How does this work exactly?  My understanding of interrupts on the Atmega is that the interrupt jumps to the corresponding interrupt vector which has the instruction to jump to the ISR.  I wasn't aware that the ISR specified at the interrupt vector could be changed during the running of the program.
41  Using Arduino / Project Guidance / Re: Sketch too big!!! First time this has happened to me. on: April 07, 2013, 06:01:58 pm
I'll give that a try....i use sprintf in a couple of places so maybe I can trim some fat there.
42  Using Arduino / Project Guidance / Re: SD card library - Why does pin 10 have to be configured as an output? on: April 07, 2013, 05:47:38 pm
Definitely! Thanks!
43  Using Arduino / Project Guidance / Sketch too big!!! First time this has happened to me. on: April 07, 2013, 01:50:36 pm
This little block of code:

Code:
//    if(recording && newReading)
//    {
//    if(strcmp(messageID, "GPGGA") == 0)
//      {
//        char filename[13];
//        sprintf(filename, "%s.txt", date);
//        if(!SD.exists(filename)) Serial.println("Making Directory");
//        File dataFile = SD.open(filename, FILE_WRITE);
//        
//        // if the file is available, write to it:
//        if (dataFile)
//        {
//          dataFile.print(latitude);
//          dataFile.print(",");
//          dataFile.print(longitude);
//          dataFile.print(",");
//          dataFile.println(satsUsed);
//          dataFile.close();
//        }  
//      }
//    }

takes my sketch from 27,444 bytes (just under the 28,672 byte limit for the leonardo) to over 33,000 bytes.  Is there a seriously trimmed down version of the SD library or perhaps the adafruit OLED display library that anyone knows about?
44  Using Arduino / Project Guidance / Re: Possible to initialize the return value of a function? on: April 07, 2013, 01:25:30 pm
That is perfect!  Thanks to the both of you!
45  Using Arduino / Project Guidance / Possible to initialize the return value of a function? on: April 07, 2013, 01:14:17 pm
If I have a function such as:

Code:
boolean test()
{
     return a==b;
}

is it possible to initialize the return value of test to "false" the same way that you can initialize a boolean variable to "false"?
Pages: 1 2 [3] 4 5 ... 19