Show Posts
Pages: 1 [2] 3 4 ... 18
16  Using Arduino / Project Guidance / Re: I'm out of memory? Is the next thing up the Mega644P? on: July 04, 2013, 06:08:40 am

I also wrote up a page discussing my fixes and experiences,
http://www.ot-hobbies.com/resource/ard-1284.htm

I just read through your link and it is fantastic!  I am wondering though, does any of this matter with regards to the package that I choose?  I am trying to fit this all onto a fairly small board so I probably won't use the pdip version of the 1284P.  If I am feeling brave I may go for something as small as the QFN package as I have had a lot of success hand soldering a 4mmx4mm QFN10 package and I think I may be okay soldering something that is materially bigger than that.
17  Using Arduino / Project Guidance / Re: I'm out of memory? Is the next thing up the Mega644P? on: July 01, 2013, 07:09:31 pm


By the way, your implementation of timer() does not handler millis() overflow correctly. To handle overflow, you can code it like this:

Code:
if(millis() - lastTime > interval)
{
    // interval has expired
    ....

Mine should do the same thing.  My code is:

Code:
//keep track of time and handle millis() rollover
boolean timer(unsigned long timeout)
  {
    return (long)(millis() - timeout) >= 0;
  }

and then when I need to time something I do something like this:

Code:
last_valid_data = millis() + 2000;

and then I can just call timer like this:

Code:
if(timer(last_valid_data))

which I believe mathematically is equivalent to your code.  I could be wrong though.  I took calculus twice in college and still only squeaked out a "C" grade so my math may not be up to snuff.
18  Using Arduino / Programming Questions / Re: gps.encode() always returning false on: July 01, 2013, 05:21:50 pm
When a GPS is first powered up it spits out NMEA sentences but it won't have a lock on any satellites yet.  It needs at least 3 and this will take a few minutes to happen.  You will know that it has a lock when this:


$GPGGA,125318.539,,,,,0,0,,,M,,M,,*4B


changes to something like this:

Code:
$GPGGA,175025.530,4041.1271,N,07406.4956,W,1,05,1.8,-266.0,M,-34.2,M,,0000*48

It will happen eventually if you have a clear view of the sky but it may take several minutes.  Just walk away from it and check back after about 10 minutes.  Assuming you always have the GPS hooked to power and you just put it into sleep mode when not using it, subsequent activations should take less than a minute to get a valid fix.
19  Using Arduino / Project Guidance / Re: I'm out of memory? Is the next thing up the Mega644P? on: July 01, 2013, 05:09:47 pm
You can figure it out for yourself. Look in the libraries and various include files.......

If you really want education, go read some of those interminable threads, where people
were scratching their heads for weeks, trying to get this stuff to work,
http://forum.arduino.cc/index.php?topic=139671.0
http://forum.arduino.cc/index.php/topic,146773.msg1102743.html
http://forum.arduino.cc/index.php/topic,144165.msg1082609.html
http://forum.arduino.cc/index.php?topic=80483.0
http://forum.arduino.cc/index.php/topic,109550.msg822612.html

This is fantastic information!  Thanks!
20  Using Arduino / Project Guidance / Re: I'm out of memory? Is the next thing up the Mega644P? on: July 01, 2013, 05:03:00 pm
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?
I am not sure what you are trying to do but I think better coding would allow you to have all the features you want and keep using the atmega328. Also you only want strings and constant arrays in PROGMEM if it is just one varible you don't want that in PROGMEM. If it turns out that it is impossible to get the code to fit on an atmega328 then I would get something with more flash. Would you be able to post your code? It would help me evaluate if you really need to upgrade or this could be optimized to fit on an atmega328.

Sure!  There is a link on reply #3 that has the code.
21  Using Arduino / Project Guidance / Re: Professionally Printing my project? SMD? on: July 01, 2013, 06:25:35 am
Where are you located?  In the U.S. I use OSHPark.com.  Fantastic service.  Very high quality boards and they have a service if you want to prototype 3 boards and a different pricing model if you want to make 100 boards.  They are also easy to use and very quick.  You just upload your eagle .brd file on their website (or you can upload the actual gerber and drill files).  In NJ I managed to get my boards back 12 days after I uploaded the files to the website.
22  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.
23  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!
24  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.
25  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?

26  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
}
27  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
28  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?
29  Using Arduino / Programming Questions / Re: Attachinterrupt question on: June 27, 2013, 08:05:18 pm
Great link!  That helps a lot!
30  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.
Pages: 1 [2] 3 4 ... 18