Amalgamation to jedna z najlepszych rzeczy, jakie przytrafiły się programowaniu w C/C++. W praktyce oznacza to, że większość .cpp z biblioteki jest wpakowana do jednego dużego .h. Cała implementacja siedzi w środku, a Ty tylko robisz 'define COTRZEBA' i 'include "biblioteka.h"' - koniec filozofii.
Zamiast męczyć się z kompilowaniem .a / .lib, pilnować linkowania i budować osobno na Linuxa, Windowsa i inne cuda, wrzucasz jeden single‑header i masz spokój. Zero zastanawiania się. Po
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@LadySandra: dawno nic nie pisałem w C++, ale od kiedy używam javy, doceniłem w cholerę głupie inline - to jest tak proste a genialne, wiem że wirutalna maszyna niby sama to robi jak uzna za słuszne, ale do cholery, przy projektowaniu danego systemu chce dokładnie wiedzieć co jak działa
z 50% moich dylematów projektowych można by załatwić inline
  • Odpowiedz
  • 1
@Sinti: Nigdy do końca nie przekonałam się do Javy (sama nie wiem czemu), za to dużo bardziej lubię C# - nawet mimo tego, że to "od Microsoftu”. W C# przynajmniej masz MethodImpl(MethodImplOptions.AggressiveInlining), więc jeśli naprawdę chcesz wymusić inline, to możesz to zrobić wprost. W C# działa to bez większych ceregieli, a Java robi swoje...
  • Odpowiedz
chciałem się pobawić sieciami neuronowymi. Liznąć trochę tego ai, stworzyć skynet od zera. Kompiluje sobie:
#include <iostream>
int main()
{
__cplusplus;
return 0;
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jakie mogą być przyczyny tego, że klon Wemos D1 Mini (esp8266) nie chce połączyć się z WiFi bądź zajmuje mu to w pinezkę długo (powyżej 400 sekund)? Wczoraj wieczorem śmigał bez problemu. Całość działania, tj wybudzenie, odczyt czujników, połączenie z WiFi, przesłanie danych przez MQTT i wejście w DeepSleep zajmowało góra 8 sekund. Dzisiaj za chorobę nie chce się połączyć z routerem, nawet jak dam mu taki przykładowy kod to albo odlicza
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@PEPE_Le_Sfont: U mnie w mieszkaniu działa tak średnio z 15 połączonych esp8266 i coś tam mierzą, ale bywa tak że potrafi się jedna sztuka tak wykrzaczyć że cała reszta ma problem z połączeniem albo trwa to bardzo długo. Przy deep_sleep to uda się zejść do około 200 ms jeśli zdefiniujesz na stałe w kodzie BSSID, kanał, ip,maskę,bramę i dns.
  • Odpowiedz
#programowanie

Nie znam się na programowaniu w ogóle.. czy takie coś by działało?
Na chłopski rozum prawie wszystko wygląda dobrze, poza tym że on nie ogarnia chyba co jest chce żeby wyświetlacz pokazał, bo dalej mi się wydaje że jest źle.

#include <LiquidCrystal.h>
r5678 - #programowanie

Nie znam się na programowaniu w ogóle.. czy takie coś by dzia...

źródło: Bez nazwy

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Nie chce mi się sprawdzać ale z doświadczenia jeśli coś nie działa to znaczy, że jest pisane zbyt ogólnie. A często jest tak, że nawet jak poda się dobre instrukcje to nadal wymyśla głupoty.
AI trzeba podawać proste, krótkie informacje, w innym przypadku zacznie dodawać od siebie/ szukać rozwiązan dziwnych itp. na siłę
  • Odpowiedz
@r5678 na adruino project hub masz tonę działającego kodu na te wyświetlacze z wyjaśnieniem, nawet software do rysowania klatek na LCD ktoś zrobił, korzystałem z tego, bardzo ciekawe. Nie zatrudniaj ai do tego chyba, że lubisz się denerwować. Zamykam
  • Odpowiedz
✨️ Obserwuj #mirkoanonim
Cześć, mam parę pytań dotyczących nowej matury rozszerzonej z informatyki.
1)Czy odpowiedzi do zadań można wpisywać ręcznie tzn. skopiować z konsoli i wkleić do notatnika?
2)Czy w części teoretycznej można używać komputera?
3)Czy można używać kalkulatora na komputerze?
4)Maturę będę pisał w visual studio w języku C++. Gdy dodaję bibliotekę <unorderedset> to automatycznie dodaje mi się biblioteka <vector>(tzn. nie muszę pisać dodatkowego #include <vector>). Czy jest to uznawane
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mirko_anonim nie znam się na teraźniejszych maturach z informatyki, ale znam się na C++. Jak korzystasz z std::vector, to dlaczego w ogóle zastanawiasz się, czy robić #include <vector>? Po prostu includujesz i już. Jak sprawdzaczka będzie na gcc, to może Ci się nie skompilować i zrobisz sobie niepotrzebne kuku.
  • Odpowiedz
#esp8266 #blynk #iot

Cześć, jestem noga w programowaniu, a chciałbym odpalić podwójny odczyt temperatury z dwóch czujnikoŵ z odczytem przez Blynk. Udało mi się uruchomić jeden, ale drugi nie pokazuje odczytu w Blynku. Gdzie może być błąd?

// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud

//
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

temp2 = DS18B202.getTempCByIndex(0);


@jurii: temp2 = DS18B202.getTempCByIndex(1); I podłącz wszystko do jednego gpio.
  • Odpowiedz
@jurii: Nie potrzebnie robisz wszystko dwa razy. Zrób tak jak dla jednego czujnika, same czujniki podłącz równolegle i czytaj je tak jak pokazałem.
DS18B20.getTempCByIndex(0);
DS18B20.getTempCByIndex(1);
DS18B20.getTempCByIndex(2);

itd w zależności ile masz czujników.
  • Odpowiedz
Ponieważ nie mam konta na elektrodzie, a w dodatku chcę się czegoś dowiedzieć pytam tutaj.
Programuję AVR z użyciem C. Głównie na podstawie Kardasia. Używam timera sprzętowego pomnożonego przez programowy licznik. Jeżeli ten licznik jest większy niż 8-bit to prockowi zdarza się gubić bity. Próbowałem kilku konfiguracji i niejednokrotnie czas mrugania wskazywał na to, że zamiast 0b10 0000 0000 timer wynosi 0b01 0000 0000. I to nie cały czas tylko np co
piwuch - Ponieważ nie mam konta na elektrodzie, a w dodatku chcę się czegoś dowiedzie...

źródło: Logic_MGGN4PEmsA

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 0
@piwuch: update, jeżeli jedyne co robisz w pętli głównej to sprawdzasz zmienną to jest cholernie prawdopodobne, że przerwanie wystąpi pomiędzy sprawdzaniem pierwszego i drugiego oktetu. A zatem jeżeli w przerwaniu dekrementowane jest z 256 na 255 to mirek podczas sprawdzania pomyśli, że sprawdził zero i o tyle wywołań sprzętowego timera będzie softwarowy timer krótszy.
  • Odpowiedz
Zagadka nr 2137.
Tajna składnia dzięki której, można definiować domyślny argument w stylu Python.
[typ] and [nazwa zmiennej] = [wartość zmiennej]

#include <string>
#include <iostream>

Co się stanie po próbie kompilacji i uruchomienia?

  • Taka składnia nie istnieje, błąd kompilacji 37.5% (24)
  • Wyprintuje "XD" 53.1% (34)
  • Udefined behavior 7.8% (5)
  • Crash w runtimie 1.6% (1)

Oddanych głosów: 64

  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Umie może ktoś podpowiedzieć czemu mi nie działa ta pętla? Chce zrobić pętle która kończy się samoistnie po 4 sekundach, lub jeśli użytkownik wciśnie Enter. Enter faktycznie kończy działanie pętli, ale pętla nie kończy się po 4 sekundach, ale trwa w nieskończoność.

#include <iostream>
#include <chrono>

using namespace std;
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@defoxe: -I /usr/include/catch2 tym zakomunikowałeś gdzie są same headery, ale nigdzie nie dałeś informacji skąd ma sobie dolinkować "mięso" do finalnej binarki. takie coś by wystarczyło jakbyś miał bibliotekę header-only. imo ten -I /usr/include/catch2/ jest niepotrzebny w ogóle, powinien tam z automatu zerkać
  • Odpowiedz
Serwo podłączone do pinu 2. Ma pulsować 0-20 stopni, gdy nic sie nie dzieje.
Jak na pinie A1 dam 3V - ma sie ustawić na 90 stopni, jak na pin a3 dam 3v - ma sie ustawić na 180. Tymczasem Jak na chwilę podam napiecie na a1 to się ustawi na 90 stopni i 4 sekundy stoi (mimo, że już napięcia nie ma). Ja podam napięcie na chwilę na a3 to się wychyli
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@7160: Raz robiłem jedna pierdołe w Arduino i wydaje mi się że problemem jest konstrukcja if ELSA. Gdy dajesz napięcie na pin np a1 to nie wiesz w którym momencie pętli for jesteś czy na początku czy pod koniec. I o a musi się dokończyć dopiero wtedy robi pętlę od nowa i zaczytuje nowe podane parametry. Jak chcesz sprawdzić to w pętlach for wypisz sobie na konsole printa , wartością
  • Odpowiedz
via Wykop
  • 0
@JurnyReks79: Ja tam się nie znam. Chat GPT mi ten program napisał. Zastanawiam się czy brać się za zastosowaniem arduino do sterowania kosiarką (zmiana biegów, w lewo, w prawo), czy robić jak człowiek - na wyłącznikach krańcowych. Tylko, że serwo bardzo by ułatwiło zmianę biegów...
  • Odpowiedz
Mam strukturę plików zorganizowana w taki sposób że foldery mają w sobie cmakelists.txt, pliki cpp i pliki header. Chciałbym zrobić tak żeby pliki header były inckudowalne przez #include<nazwafolderu/nazwaheadera>. Próbowałem w cmakelists danego folderu zrobić

addlibrary(nazwafolderu ...)
targetincludedirectories(nazwafolderu ${CMAKECURRENTSOURCEDIR})

Niestety to nie działa. W tutorialach na internecie widziałem że ludzie tworzą podfoldery include I tam
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W add library na pierwszym miejscu podajesz nazwę targetu, a później konkretne pliki. Analogicznie w target include directories, najpierw podajesz nazwę targetu do którego chcesz podpiąć includy.

Generalnie to wszystko zależy od tego co chcesz osiągnąć. Jeżeli to nie są nagłówki publiczne, to nie ma potrzeby wydzielać ich i mogą znajdować się w katalogu ze źródłami. Wtedy możesz je "includować" z tylko z generatorem $<BUILD INTERFACE: jak w dokumentacji: https://cmake.org/cmake/help/latest/command/target_include_directories.html

Jeśli nie
  • Odpowiedz
@asdxmee: Tak, jest to dosyć standardowy schemat organizacji kodu. Każdy moduł ma swój interfejs (w twoim przypadku include) oraz src w któym jest prywatny kod dla modułu.
  • Odpowiedz
  • 4
@brck89: do drugiego skryptu prawdopodobnie nie potrzebujesz żadnych uprawnień i żaden antywirus go nie wykryje.

Jest on napisany w PowerShell, który jest dostępny standardowo w Windows. Minus jest taki, że zapycha pamięć (od 100 do 200 MB). Poza tym jedyne co wykrywa to ruchy myszką (pomija pisanie na klawiaturze).

Skrypt skopiuj do notatnika i zapisz w formacie .ps1. Możesz też po prostu użyć PowerShell
  • Odpowiedz
#arduino #esp32 #programowanie

Mam problem z komunikacją po bluetooth.
Chcę wyświetlić proste menu. Pierwsza opcja to pobranie imienia i nazwiska. Pozostałe opcje to pierdoły.
Pierwszy problem: program napiernicza tym menu do klienta - no wiadomo, w pętli jest...
Jak to sensownie wyświetlić raz, gdy klient się podłączy?
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak to sensownie wyświetlić raz, gdy klient się podłączy?


@defoxe: nie da się, bo nie wiesz kiedy klient się podłącza. Możesz co najwyżej zareagować na jakiś klawisz, np. Enter, albo ctrl-l i wyświetlić ponownie menu. Możesz też po stronie klienta użyć terminala, który rozumie kody sterujące np. VT100 (putty) i wtedy przed wyświetleniem menu możesz kazać wyczyścić ekran, żeby nie było ściany tekstu.
  • Odpowiedz
@defoxe: jeśli chodzi o pojedyncze wyswietlenie komuniaktu to sprobuj:

if (SerialBT.connected()) wyswietlKomunikat();
jesli chodzi o to ze kolejne wywolania readStringUntil nie zwracaja nic to pewnie problem ze bufor odbiorczy jest pusty w momencie gdy probujesz go czytac, przed kazdym odczytem musisz sprawdzic z SerialBT.available() IMO. Mozesz sprobowac wymusisz odczekanie na bufor przez dodatkowe petle:

while
  • Odpowiedz
Test nowej opcji cytowania kodu, można scrollować dalej.

#include <iostream>

int main() {
bool jestSpadkowiczem;
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach