hi botty,
im zusammenhang mit diesem sketch versuche ich die ausgabezeiten meiner serial.print befehle zu verkürzen, ähnlich diesem hier (das ist doch der hintergrund, oder?):Code:#include <AFMotor.h> // Motor AF_DCMotor motor(4); // Die Anzahl der Flankenwechsel volatile unsigned long ticks = 0; // passender Encode Pin für den Motor static const uint8_t enc_pin = 18; /* * Die Interrupt Routine die beim Flankenwechsel aufgerufen wird */ void motor_isr(void){ ticks++; } /* * Serial und den Pin initialisieren, die Interrupt Routine * zuordnen. */ void setup() { Serial.begin(9600); pinMode(enc_pin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(enc_pin), motor_isr, CHANGE); Serial.println("setup fertig"); } void loop() { unsigned long start_zeit, regel_zeit, aktions_zeit; /* * Ticks beschreiben, dabei wollen wir nicht von einem * Interrupt unterbrochen werden */ noInterrupts(); ticks = 0; interrupts(); motor.setSpeed(130); motor.run(FORWARD); Serial.println("ticks initialisiert und Motor laeuft"); /* * Fuer 10 sec "Regeln" und eine andere Aktion parallel * dazu ausführen. */ start_zeit = regel_zeit = aktions_zeit = millis(); while(start_zeit + 10000 > millis() ) { /* * Motor "regeln" alle 0,5sec */ static const unsigned long rdiff = 500; if(regel_zeit + rdiff <= millis()) { regel_zeit = rdiff + millis(); // nächstes Intervall setzen. Serial.print(millis()); Serial.print(": Regeln "); /* * Wir lesen unseren Zaehler und wollen nicht * von Interrupts gestört werden */ noInterrupts(); unsigned long tmp = ticks; interrupts(); Serial.println(tmp); } /* * Die andere Aktion die Parallel zum "Regeln" ausgeführt wird * und nur unterbrochen wird, wenn ein Interrupt auftritt. */ static const unsigned long adiff = 333; if(aktions_zeit + adiff <= millis()) { aktions_zeit = adiff + millis(); // Nächste Intervall setzen // Hier irgendetwas anderes machen Serial.print(millis()); Serial.println(": andere Aktion"); } } Serial.println("Motor stop"); motor.setSpeed(0); motor.run(RELEASE); delay(2000); }
da werden ja verschiedene ausgaben zu einem string "addiert" und dann als ganzes ausgedruckt. Beim einsatz dieser zeilen:Code:// Ticks und Strecke ausgeben static const int wtime = 250; if(log_time + wtime <= millis() ) { out_s = ""; out_s += millis() + ": "; for(uint8_t idx = M_VL; idx < M_MAX; idx++) { out_s += idx + " "; out_s += motoren[idx].ticks + " "; // Hier koennte jetzt ein Interrupt unterbrechen! out_s += motor_strecke_gefahren(idx); ticks_tmp = 0; motor_ticks_per_milli(idx, &ticks_tmp); out_s += " " + ticks_tmp; if(idx == M_MAX - 1) out_s += "\n"; else out_s += ", "; } for(uint8_t idx = 0; idx < M_MAX; idx++) all_ticks_tmp[idx] = 0; motor_ticks_per_milli_fuer_alle(all_ticks_tmp, M_MAX); for(uint8_t idx; idx < M_MAX; idx++) out_s += all_ticks_tmp[idx] + " "; Serial.println(out_s); log_time = wtime + millis(); }
kommt aber etwas ähnliches im serial monitor wie das hier:Code:out_VL += " " + millis(); out_VL += " " + tmp_VL; out_VL += " "+ tmp_VL_ges; out_VL += " " + v; Serial.print (out_VL);
muss man vor dem addieren nicht die arten der ausgaben in eine gleiche art umwandeln?Code:setup fertig ticks_VL initialisiert und Motor_VL laeuft 333: andere Aktion 500: motor dreht schneller: 102 999: andere Aktion 1500: motor dreht schneller: 104 nfnf�1665: andere Aktion 2331: andere Aktion 2500: motor dreht schneller: 106 nfnf�on 00: motor dreht schneller: 106 dere Aktion 31: ander��2997: andere Aktion 3500: motor�setup fertig ticks_VL initialisiert und Motor_VL laeuft 335: andere Aktion 502: motor dreht schneller: 102 1001: andere Aktion 1502: motor dreht schneller: 104 7o_��i����i__��߱������i�:�x�[�W����>:3�ԯ��������k�����=EM|-v�Zz/�n��o�)}���W�v��!>������?+���,���Z��~�{��vN�s�}�1�3N���n5��v�s�KO��u���:���{m��߾�����?g������_�k� �{��g��=^�{7����w��5wr�W?_ky���ܻ���s|4��u�.����D�\·�=���li�����R�~����t��?ٵ���I|,�R�؟��Մn�Wڎ^7��Ÿ�����C9������������4�Z������7�?�eh>�������~y������������Jz ~�>_�~�����FZ{��G����������i����'�� 'ܿ��'/o�������ۖ�W�G�/~-�o���6o�uFl�>l��������/D�E�^أ�O�{��=�#���1���Nw�Cq̎���E�\�h����<|������[q��vx\����~������{�����{�{��Ol��}d��u_������,�}���iH?����eU=�7A������O,a���9������Y���|�L}�e^X��^���n�j>���R����������r������<i�������K�?z:�ϗ�#�j�;�\ߍb���������}W�?�m�O���릟���b���y���,�"�����{���ֽ}��ۚ����;M��s�K��Z��[�8�Ү���sW�u�j,�3,~Ⱥ/���[��m���_��-� ~���y{k�T���F��������/�u��(>��tv�WJ��g��zgF�����ۅ�+��|��T�S���緖��>�-�Zcпm���`�%�{���p��������c��ϗ������Wm)���\ܲ�γ������v��~_)���n'�?����+�=������zZG^��'�z�H���N{7����w��5wr�W?_ky�ܻ���s|4��u�.�ī�D�\���=���li�����R�~����t��?ٵ���I|,�R�؟��Մn�W��^7��Ÿ�����C9���������







Zitieren

Lesezeichen