Show Posts
Pages: 1 2 [3] 4 5 ... 12
31  Using Arduino / Programming Questions / Writing to SD card on: January 01, 2012, 10:20:46 pm
Hello, I have been trying to log temperature data to an SD card for storage. The code works great when I have the usb attached to the board for power, But when I switch over to my power supply and run the same code the board logs around 7 readings then stops. If i power cycle the board it takes another 7 reading and stops again. This is the code I am using.

Code:
#include <Wire.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <ctype.h>
#define BMP085_ADDRESS 0x77

Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;

char name[] = "Log.txt";   
char contents[256];         
char in_char=0;
int index=0;               
const unsigned char OSS = 0; 
int ac1;
int ac2;
int ac3;
unsigned int ac4;
unsigned int ac5;
unsigned int ac6;
int b1;
int b2;
int mb;
int mc;
int md;

int X, Y, Z;
const float p0 = 101325;   
float altitude;
float feet = 3.2808399;
long b5;
short temperature;
long pressure;

void setup(void)

  Serial.begin(9600);
  Wire.begin();

  pinMode(10, OUTPUT);       
  card.init();             
  volume.init(card);         
  root.openRoot(volume);
  bmp085Calibration(); 
  pinMode(7, OUTPUT);
}
void loop(void){
  temperature = bmp085GetTemperature(bmp085ReadUT());

  file.open(root, name, O_CREAT | O_APPEND | O_WRITE); 
  file.println( int((temperature * 0.1) * 1.8 + 32)); 
  digitalWrite(7, HIGH);
  file.close();       
  digitalWrite(7, LOW);

  delay(1000);     
}

void bmp085Calibration()
{
  ac1 = bmp085ReadInt(0xAA);
  ac2 = bmp085ReadInt(0xAC);
  ac3 = bmp085ReadInt(0xAE);
  ac4 = bmp085ReadInt(0xB0);
  ac5 = bmp085ReadInt(0xB2);
  ac6 = bmp085ReadInt(0xB4);
  b1 = bmp085ReadInt(0xB6);
  b2 = bmp085ReadInt(0xB8);
  mb = bmp085ReadInt(0xBA);
  mc = bmp085ReadInt(0xBC);
  md = bmp085ReadInt(0xBE);
}


short bmp085GetTemperature(unsigned int ut)
{
  long x1, x2;

  x1 = (((long)ut - (long)ac6)*(long)ac5) >> 15;
  x2 = ((long)mc << 11)/(x1 + md);
  b5 = x1 + x2;

  return ((b5 + 8)>>4); 
}


long bmp085GetPressure(unsigned long up)
{
  long x1, x2, x3, b3, b6, p;
  unsigned long b4, b7;

  b6 = b5 - 4000;
  x1 = (b2 * (b6 * b6)>>12)>>11;
  x2 = (ac2 * b6)>>11;
  x3 = x1 + x2;
  b3 = (((((long)ac1)*4 + x3)<<OSS) + 2)>>2;

  x1 = (ac3 * b6)>>13;
  x2 = (b1 * ((b6 * b6)>>12))>>16;
  x3 = ((x1 + x2) + 2)>>2;
  b4 = (ac4 * (unsigned long)(x3 + 32768))>>15;

  b7 = ((unsigned long)(up - b3) * (50000>>OSS));
  if (b7 < 0x80000000)
    p = (b7<<1)/b4;
  else
    p = (b7/b4)<<1;

  x1 = (p>>8) * (p>>8);
  x1 = (x1 * 3038)>>16;
  x2 = (-7357 * p)>>16;
  p += (x1 + x2 + 3791)>>4;

  return p;
}

char bmp085Read(unsigned char address)
{
  unsigned char data;

  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(address);
  Wire.endTransmission();

  Wire.requestFrom(BMP085_ADDRESS, 1);
  while(!Wire.available())
    ;

  return Wire.receive();
}

int bmp085ReadInt(unsigned char address)
{
  unsigned char msb, lsb;

  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(address);
  Wire.endTransmission();

  Wire.requestFrom(BMP085_ADDRESS, 2);
  while(Wire.available()<2)
    ;
  msb = Wire.receive();
  lsb = Wire.receive();

  return (int) msb<<8 | lsb;
}

unsigned int bmp085ReadUT()
{
  unsigned int ut;

  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(0xF4);
  Wire.send(0x2E);
  Wire.endTransmission();
  delay(5);

  ut = bmp085ReadInt(0xF6);
  return ut;
}

unsigned long bmp085ReadUP()
{
  unsigned char msb, lsb, xlsb;
  unsigned long up = 0;

  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(0xF4);
  Wire.send(0x34 + (OSS<<6));
  Wire.endTransmission();

  delay(2 + (3<<OSS));

  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(0xF6);
  Wire.endTransmission();
  Wire.requestFrom(BMP085_ADDRESS, 3);

  while(Wire.available() < 3);
  msb = Wire.receive();
  lsb = Wire.receive();
  xlsb = Wire.receive();

  up = (((unsigned long) msb << 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb) >> (8-OSS);
  return up;
}


32  Using Arduino / Programming Questions / Re: Shift registers code on: September 14, 2011, 10:02:40 pm
Okay so say i have an array like so:

int rows[16] = {0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0};

And I have two shift registers chained together. The first 8 numbers in the array need to represent the LED's 1-8 on the first shift register and the last 8 numbers have to represent the LED's 9-16 in the second shift register. So with this array controlling the shift registers outputs, all LED's have to be off except led 13. So what I'm trying to say is if rows[13] = 1, how can I have it turn on just the 13th LED (5th led of the second shift register) with the given array?

sorry if this is very confusing, but thats mostly the reason I am having difficulty.

Thanks,
Casey
33  Using Arduino / Programming Questions / Shift registers code on: September 14, 2011, 04:20:57 pm
I have some confusion about using more than two 74hc595 shift registers. Does anyone have any example code that uses three or more shift registers? If so could you post it here.
Thanks,
Casey.
34  Using Arduino / Installation & Troubleshooting / Re: Programmer not responding on: September 05, 2011, 06:08:35 pm
HMMM that didnt work. any oother suggestions

35  Using Arduino / Installation & Troubleshooting / Programmer not responding on: September 05, 2011, 05:24:29 pm
I have an odd problem. While using the arduino pro mini sparkfun programmer, Sometime it will work perfectly and not give me any problems. But, occasionally and at random it will say "programmer not responding". I'm not sure why this is happening does anyone have any suggestions?
36  Using Arduino / Microcontrollers / Programmer not responding on: September 05, 2011, 05:17:35 pm
I have an odd problem. While using the arduino pro mini sparkfun programmer, Sometime it will work perfectly and not give me any problems. But, occasionally and at random it will say "programmer not responding". I'm not sure why this is happening does anyone have any suggestions?

37  Using Arduino / Microcontrollers / Re: Using analog pin 6 & 7 on arduino mini? on: September 03, 2011, 10:28:44 pm
This is a picture of the pcb I made but the two rows analog pins 6 and 7 control are off....

38  Using Arduino / Microcontrollers / Re: Using analog pin 6 & 7 on arduino mini? on: September 03, 2011, 10:24:22 pm
I edited the pins_arduino.c file from this path: /Desktop/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino. Inside that .c file I found the position in the code that cross roads indicated I needed to change.
39  Using Arduino / Microcontrollers / Re: Using analog pin 6 & 7 on arduino mini? on: September 03, 2011, 10:17:14 pm
Ok made the changes to the pins_arduino.c file but I'm still not getting any output on those two pins. Any other suggestions?
40  Using Arduino / Microcontrollers / Re: Using analog pin 6 & 7 on arduino mini? on: September 03, 2011, 09:54:50 pm
Im not to sure how to do what your telling me i should do. Can you give me an example??
41  Using Arduino / Microcontrollers / Re: Using analog pin 6 & 7 on arduino mini? on: September 03, 2011, 08:49:47 pm
Just as digital, I only have led's attached to those pins.
42  Using Arduino / Microcontrollers / Using analog pin 6 & 7 on arduino mini? on: September 03, 2011, 07:12:13 pm
The arduino mini board may not have pin headers for analog 6 & 7 but those pins are on the atmega chip. I have built a custom circuit board that does break out those pins to headers, but for some reason I cant get them to work. I have heard that you have to go into the pins_arduino.c folder and change something in there but I am not sure what. I am using arduino 0022. Does anyone have any ideas on how to get those two pins working? Any help is appreciated!
43  Using Arduino / Microcontrollers / Re: Custom PCB program uploading problem on: August 30, 2011, 11:26:33 pm
Its an atmega 328p. I used an atmega 328p-AU chip from an arduino mini.

Thank you for the quick response!
44  Using Arduino / Microcontrollers / Custom PCB program uploading problem on: August 30, 2011, 11:02:07 pm
I designed a PCB For a 9x9 led matrix display. I used a Atmega 328 AI TQFP microcontroller and connected it using the same schematic as the Arduino mini. While uploading to the board using a sparkfun 5v ftdi programmer, I recieved the following:

Verbose Output:

avrdude: Version 5.4-arduino, compiled on Oct  9 2007 at 11:20:31
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

         System wide configuration file is "/Volumes/Arduino/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/CaseyGross/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port            : /dev/tty.usbserial-A700fbGW
         Using Programmer      : stk500v1
         Overriding Baud Rate  : 57600
avrdude: Send: 0 [30]   [20]
avrdude: Send: 0 [30]   [20]
avrdude: Send: 0 [30]   [20]
avrdude: Recv: . [f6]
avrdude: stk500_getsync(): not in sync: resp=0xf6
avrdude: Send: Q [51]   [20]
avrdude: Recv: W [57]
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x57

avrdude done.  Thank you.

This is my schematic for the board so you guys can check to see if its a hardware problem



45  Using Arduino / Microcontrollers / Help with schematic: ICSP with ATMEGA328-AI and resonator. on: June 03, 2011, 02:04:22 pm
I just want to post a picture of my schematic to see if you guys can spot something hooked up wrong. And I know the button is connected wrong I just haven't really set that up yet.


Pages: 1 2 [3] 4 5 ... 12