• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zapisywanie informacji w rzędzie
#1
Witam mam niby mały problem, ale nie widzę przyczyny, informacje (użytkownika + czas)  zapisuje mi na kartę sd, jednak są one wyświetlane w kolumnie, a chciałbym aby były w rzędzie. Zamieszczam kod i proszę o pomoc.  Smile

Kod programu:

#include <SPI.h>
#include <SD.h>
#include <MFRC522.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <virtuabotixRTC.h>   
                                                                           

virtuabotixRTC myRTC(6, 7, 8);

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int czujnik = A3;   //pin analogowy A3 połączony z sygnałem z czujnika
float VOLT;
float TEMP;


const byte UID[] = {0x17, 0x5A, 0x10, 0xCC,  
                    0x47, 0x55, 0x3A, 0xCC};


MFRC522 rfid(10, 9);
MFRC522::MIFARE_Key key;

File plik;

void setup() 
{
{
  Serial.begin(9600);

 ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("Wczytywanie karty SD...");

if (!SD.begin(4)) {
    Serial.println("Brak lub uszkodzenie karty SD");
    return;
  }
  Serial.println("Karta SD zainicjalizowana.");


  
  SPI.begin();
  rfid.PCD_Init();
  pinMode(2, OUTPUT); //niebieska LED
  pinMode(3, OUTPUT); //zielona LED
  pinMode(5, OUTPUT);  //czerwona LED
  
  // Set the current date, and time in the following format:
// seconds, minutes, hours, day of the week, day of the month, month, year
  //myRTC.setDS1302Time(40, 50, 9, 2, 20, 3, 2018); 



}
void loop() {


myRTC.updateTime();    

int odczyt = analogRead(czujnik);      //odczytanie wartości z czujnika
  VOLT = (odczyt * 5.0) / 1024.0;        //przeliczenie odczytanej wartości na napięcie w woltach (dla podłączenia pod 5 V)
  TEMP = VOLT  * 100;                    //konwersja z napięcia na temperaturę, rozdzielczość czujnika wynosi 10 mV na stopień
                                                                                  
                                                                                                         
  lcd.init();                                                                 
  lcd.backlight(); 
  lcd.setCursor(0,0);                                                                 
    lcd.print(myRTC.dayofmonth);                                                                       
    lcd.print("/");                                                                                      
    lcd.print(myRTC.month);                                                                             
    lcd.print("/");                                                                                     
    lcd.print(myRTC.year);                                                                              
    lcd.print("  ");                                                                                    
    lcd.print(myRTC.hours);                                                                             
    lcd.print(":");                                                                                     
    lcd.print(myRTC.minutes);                                                                            
  lcd.setCursor(0,1);
    lcd.print("T:");                                                                      
    //lcd.print((int)round(TEMP));
    lcd.print(TEMP,2);
    lcd.print((char)223);
    lcd.print("C");
    lcd.print(" ");
    lcd.print("Zbliz");

digitalWrite(3, LOW);
digitalWrite(5, LOW);
digitalWrite(2, HIGH);
  
  if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial())
  {
    if (rfid.uid.uidByte[0] == UID[0] && 
        rfid.uid.uidByte[1] == UID[1] &&
        rfid.uid.uidByte[2] == UID[2] &&
        rfid.uid.uidByte[3] == UID[3]) 
        

{     String imie = "Adrian";
      
      Serial.println("Poprawny");
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Stan :");
      lcd.setCursor(0,1);
      lcd.print("Dostep ");
     
      lcd.print(imie);
      
      digitalWrite(2, LOW);
      digitalWrite(5, LOW);
      digitalWrite(3, HIGH);

      plik = SD.open("wejscia.txt", FILE_WRITE);
      plik.println("Użytkownik: ");
      plik.print(imie);
      plik.println(" ");
      plik.print(myRTC.dayofmonth);
      plik.println("/");
      plik.print(myRTC.month); 
      plik.println("/");                                                                                     
      plik.print(myRTC.year);                                                                              
      plik.println("  ");                                                                                    
      plik.print(myRTC.hours);                                                                             
      plik.println(":");                                                                                     
      plik.print(myRTC.minutes);
      plik.println("  ");
      plik.close();      
      

      delay(3000);
    }
        
     else if 
        (rfid.uid.uidByte[0] == UID[4] && 
        rfid.uid.uidByte[1] == UID[5] &&
        rfid.uid.uidByte[2] == UID[6] &&
        rfid.uid.uidByte[3] == UID[7])
         
    { String imie = "Zbychu";
      Serial.println("Poprawny");
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Stan :");
      lcd.setCursor(0,1);
      lcd.print("Dostep ");
     
      lcd.print(imie);
      
      digitalWrite(2, LOW);
      digitalWrite(5, LOW);
      digitalWrite(3, HIGH);

      plik = SD.open("wejscia.txt", FILE_WRITE);
      plik.println("Użytkownik: ");
      plik.print(imie );
      plik.println(" ");
      plik.print(myRTC.dayofmonth);
      plik.println("/");
      plik.print(myRTC.month ); 
      plik.println("/");                                                                                     
      plik.print(myRTC.year);                                                                              
      plik.println("  ");                                                                                    
      plik.print(myRTC.hours);                                                                             
      plik.println(":");                                                                                     
      plik.print(myRTC.minutes);
      plik.println("  ");
      plik.close(); 
       
      
      
      delay(3000);
    } else
    {
      Serial.println("Niepoprawny");
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Stan :");
      lcd.setCursor(0,1);
      lcd.print("Odmowa dostepu");
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(5, HIGH);
      delay(3000);
    }}
    rfid.PICC_HaltA();
    rfid.PCD_StopCrypto1();

 
   delay(300);
}
 
Odpowiedź
#2
(21-03-2018, 14:06)merol92 napisał(a):  są one wyświetlane w kolumnie, a chciałbym aby były w rzędzie
Gdzie są wyświetlane?
Na wyświetlaczu?
Przymierzam się do napisania takiego poradnika dla forów internetowych: "O precyzyjnym zadawaniu pytań"
Czasami ktoś ma na tyle czasu i nerwów, aby się domyślić i napisać odpowiedź, ale najczęściej są to brednie ślepca błądzącego po omacku.
W twoim przypadku, domyślam się, chodzi o formatowanie danych w pliku.
Wskazówka: zainteresuj się metodami println, oraz print, klasy File.
Pozdrawiam.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości