Arduino SD卡读卡器使用诺基亚GLCD创建文件但不写入文件

Arduino SD卡读卡器使用诺基亚GLCD创建文件但不写入文件,arduino,sd-card,lcd,Arduino,Sd Card,Lcd,我已经忙了几天了,每次都是空的。 我正试图创建一个简单的临时日志记录设备 我有一个使用串行监视器创建和写入文件的工作代码,这非常有效,但当我将其与任何其他设备接触时(我使用开关导航LCD显示器,但写入部分失败) 代码将使用我选择的名称创建一个文件,但不会写入该文件。这是我的问题 这是我的密码 // Date and time functions using a DS1307 RTC connected via I2C and Wire lib //A4 -- SDA //A5 -- SCL //

我已经忙了几天了,每次都是空的。 我正试图创建一个简单的临时日志记录设备

我有一个使用串行监视器创建和写入文件的工作代码,这非常有效,但当我将其与任何其他设备接触时(我使用开关导航LCD显示器,但写入部分失败)

代码将使用我选择的名称创建一个文件,但不会写入该文件。这是我的问题

这是我的密码

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
//A4 -- SDA
//A5 -- SCL
// 2 -- DS ///// Not needed really I dont think

// It is assumed that the LCD module is connected to
// the following pins using a levelshifter to get the
// correct voltage to the module.
//      SCK  - Pin 0
//      MOSI - Pin 1
//      DC   - Pin 2
//      RST  - Pin 3
//      CS   - Pin 5 
//
/*

 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13

 ** CS - pin 10

 */


#include <LCD5110_Graph.h>
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"

LCD5110 myGLCD(0,1,2,3,5);
RTC_DS1307 RTC;
extern uint8_t SmallFont[];
extern uint8_t TinyFont[];
int up=6,down=8,enter=4,right=7,left=9; ////worked out new ones
File root;
char fileName[12];

void setup()  
{
  Wire.begin();
  RTC.begin();
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);

   while (! RTC.isrunning()) 
      {
        myGLCD.print("RTC NOT running!",CENTER,18);
        myGLCD.update();
        Wire.begin();
        RTC.begin();
      }  
    myGLCD.print("RTC NOW running!",CENTER,18);
    myGLCD.update();
    delay(1000);
    myGLCD.clrScr();
    myGLCD.print("Start",CENTER,18);
    myGLCD.update();
    delay(1000);

  pinMode(10, OUTPUT);

if (!SD.begin(10)) 
{
  myGLCD.print("FAILED!",CENTER,18);
  myGLCD.update();
  delay(1000);
}
else
{
myGLCD.print("DONE",CENTER,18);
myGLCD.update();
delay(1000);
}
  pinMode(up,INPUT);
  pinMode(down,INPUT);
  pinMode(enter,INPUT);
  pinMode(left,INPUT);
  pinMode(right,INPUT);
  pinMode (A0,INPUT);


}

void loop()
{
myGLCD.print("Names now",CENTER,18);
myGLCD.update();
delay(1000);

menu();

float Temp

root = SD.open(fileName,FILE_WRITE);
DateTime now = RTC.now();

if(root) {
  for(int p=0;p<5;p++)
{
   myGLCD.print("DONE 2",CENTER,18);
   myGLCD.update();

   delay(1000);

   /////////// Code to get the current temp
   Temp = log(((34611200/analogRead(A0)) - 33800));
   Temp = 1 / (0.000815883 + (0.000222435 * Temp) + (0.000000104 * Temp * Temp * Temp));
   Temp = Temp - 273.15;            // Convert Kelvin to Celcius


   myGLCD.clrScr();
   myGLCD.print("Temp",CENTER,18);

  myGLCD.update();

  pinMode(10,OUTPUT);
    root.print(Temp);
    root.print(" ---- ");
    root.print(now.hour());
    root.print(":");
    root.print(now.minute());
    root.print(" ");
    root.print(now.day());
    root.print("/");
    root.print(now.month());
    root.print("/");
    root.println(now.year());
  delay(2000);
}

  root.close();   
}
else {
  myGLCD.print("Failed",CENTER,18);
  myGLCD.update();
  delay(1000);
}
root.close();
  }

void menu()
{
//////////// menu to select what you want to do (create a file)
/// then goes to picker to select name
}
void picker()
{
//// code to put a selection for a file name on the LCD USER selects this file name after that 
////////// .txt is added to the name
  }
//使用通过I2C和Wire lib连接的DS1307 RTC执行日期和时间功能
//A4——SDA
//A5——症状自评量表
//2--DS/////Not needed真的我不认为
//假设LCD模块连接到
//以下引脚使用水平移动器来获得
//模块的正确电压。
//SCK-引脚0
//MOSI-引脚1
//直流-引脚2
//RST-引脚3
//CS-引脚5
//
/*
*SD卡连接到SPI总线,如下所示:
**MOSI-引脚11
**味噌-针脚12
**时钟-针脚13
**CS-引脚10
*/
#包括
#包括
#包括
#包括“RTClib.h”
LCD5110 myGLCD(0,1,2,3,5);
RTC_DS1307 RTC;
外部uint8_t SmallFont[];
外部单位8_t TinyFont[];
int up=6,down=8,enter=4,right=7,left=9////制定新的
文件根目录;
字符文件名[12];
无效设置()
{
Wire.begin();
RTC.begin();
myGLCD.InitLCD();
myGLCD.clrsc();
myGLCD.setFont(SmallFont);
而(!RTC.isrunning())
{
myGLCD.print(“RTC未运行!”,中心,18);
myGLCD.update();
Wire.begin();
RTC.begin();
}  
打印(“RTC正在运行!”,中心,18);
myGLCD.update();
延迟(1000);
myGLCD.clrsc();
myGLCD.打印(“开始”,中心,18);
myGLCD.update();
延迟(1000);
pinMode(10,输出);
如果(!SD.begin(10))
{
myGLCD.print(“失败!”,中心,18);
myGLCD.update();
延迟(1000);
}
其他的
{
myGLCD.打印(“完成”,中心,18);
myGLCD.update();
延迟(1000);
}
pinMode(向上,输入);
引脚模式(向下,输入);
pinMode(输入,输入);
pinMode(左,输入);
pinMode(右,输入);
引脚模式(A0,输入);
}
void循环()
{
myGLCD.print(“立即命名”,中心,18);
myGLCD.update();
延迟(1000);
菜单();
浮子温度
root=SD.open(文件名,文件\写入);
DateTime now=RTC.now();
如果(根){

对于(int p=0;p不确定您是否已经解决了这个问题,但如果它有帮助,我已经做了类似的事情,在LCD上显示室内/室外温度。我在这里的G+上发表了一篇文章

我今天也刚开始将数据记录到SD卡上,工作代码如下:

希望在所有这些之间,你能得到解决问题所需要的东西


干杯。

谢谢,老兄,我已经完成了这个问题,但我会看看你说了什么,非常感谢。你的解决方案是什么?